社区讨论
反悔贪心求条,码风不劣但思路混乱
P3045[USACO12FEB] Cow Coupons G参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mlhgp2y7
- 此快照首次捕获于
- 2026/02/11 11:20 4 周前
- 此快照最后确认于
- 2026/02/11 13:35 4 周前
CPP
#include<bits/stdc++.h>
using namespace std;
/*
K老师,早上好
PLS,早上好
L老师,早上好
KKK老师,早上好
*/
int chazhi[50004];
struct node{
int num,id;
bool operator<(const node &t)const{
return chazhi[id]>chazhi[t.id];
}
}cow[50004];
bool cmp(node a,node b){
return a.num>b.num;
}
priority_queue<node> q,q1;
int main(){
int n,k,m;
cin>>n>>k>>m;
for(int i=1;i<=n;i++){
cin>>cow[i].num>>chazhi[i];
cow[i].id=i;
cow[i].num-=chazhi[i];
}
sort(cow+1,cow+1+n,cmp);
int now=0,ans=0;
q.push((node){0,0});
for(int i=1;i<=n;i++){
if(q.size()<k)
if(now+cow[i].num<m&&k-q.size()>1||now+cow[i].num+min(chazhi[q.top().id],chazhi[cow[i].id])<m&&k-q.size()<=1){
now+=cow[i].num;
q.push(cow[i]);
ans++;
}
else if(now+cow[i].num==m){
cout<<ans;
return 0;
}
else{
if(cow[i].num+chazhi[q.top().id]+now<=m){
now+=chazhi[q.top().id];
now+=cow[i].num;
q.pop();
q.push(cow[i]);
ans++;
}
else{
cout<<ans;
return 0;
}
}
}
cout<<ans;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...