模板思考之反悔贪心(未完成)
2026-01-10 18:39:51
发布于:上海
丢个链接链接描述
这道题目是反悔贪心的模板。
单个人认为就算是模板也很有值得深思的地方吧。
先将代码放出:(方便后续解读)
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
typedef long long ll;
struct Node{
ll t1,t2;
//修理这个建筑需要T1时间,需要在T2秒内完成这个建筑的修复。
friend bool operator < (Node a,Node b){
return a.t1<b.t1;
}
}node[N];
priority_queue<Node>pq;
bool cmp(Node a,Node b){
return a.t2<b.t2;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>node[i].t1>>node[i].t2;
sort(node+1,node+1+n,cmp);
ll now=0;
int ans=0;
for(int i=1;i<=n;i++){
//cout<<node[i].t1<<" "<<node[i].t2<<" "<<now<<endl;
if(node[i].t1+now<=node[i].t2){
pq.push(node[i]);
now+=node[i].t1;
ans++;
}else if(pq.size()&&node[i].t1<pq.top().t1){
Node sum=pq.top();
pq.pop();
now-=sum.t1;
now+=node[i].t1;
pq.push(node[i]);
}
}
cout<<ans;
return 0;
}
先说说整体的思路吧:
因为是反悔贪心的模板,所以整体必然是反悔贪心。
怎么贪:

模板大概是这样的一个结构(整体分为两个部分):
1.排序
2.反悔贪心
对这两个部分,我提出几个问题:
Q1:
全部评论 1
实际写的时候想不出来
还是直接证贪心吧2026-01-10 来自 广东
0确实,没有准确的特征,所以基本起步蓝色,2025CSP-S T1 神奇的反贪弄得我人仰马翻。
2026-01-10 来自 上海
0T1是超好、超简单、超棒的贪心!
T2以为是贪心于是爆了谢谢你贪心
NOIP T1神秘贪心花我2个小时,为什么过了大样例还挂分2026-01-10 来自 广东
0CSP-S T1神秘贪心花我1h还没想出来
T2蒙了一个贪心的结论然后 谢谢你贪心
NOIP T1是超好、超简单、超棒的贪心!
T2的部分分也是一堆超好、不简单、超棒的贪心
(((2026-01-10 来自 广东
0



















有帮助,赞一个