社区讨论
为啥一定要把入堆放在出堆之前
P2107小 Z 的 AK 计划参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m3u03232
- 此快照首次捕获于
- 2024/11/23 18:01 去年
- 此快照最后确认于
- 2025/11/04 14:05 4 个月前
我这个代码时间和是分开算的,但依然需要把入堆放在前面,为啥呢?
WAon#13代码:
CPP#include <bits/stdc++.h>
#define int uint64_t
//#define int __int128
//#define MOD (1000000007)
//#define eps (1e-6)
#define endl '\n'
#define debug_endl cout<<endl;
#define debug cout<<"debug"<<endl;
using namespace std;
const int MAXN=1e5+10;
int n,m,ans,sum;
priority_queue<int> q;//选中的房间思考时间之和
struct Room{
int x,t;
}a[MAXN];
bool cmp(Room A,Room B){
return (A.x==B.x?A.t<B.t:A.x<B.x);
};
signed main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;++i){
cin>>a[i].x>>a[i].t;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;++i){
sum+=a[i].t;
while(!q.empty()&&sum+a[i].x>m){
sum-=q.top();
q.pop();
}
q.emplace(a[i].t);
ans=max(ans,(int)q.size());
}
cout<<ans;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...