社区讨论
简单二分题WA on #2 求调!
CF1260D A Game with Traps参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m5do048x
- 此快照首次捕获于
- 2025/01/01 16:58 去年
- 此快照最后确认于
- 2025/11/04 12:05 4 个月前
rt,对着题解怎么改都是一样,现在准备开始对拍,求调!
code:
CPPcode:
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
int l,r,d;
}b[200005];
int m,n,k,t,a[200005],vis[200005];
int cmp(node a,node b){
return a.d>b.d;
}
int cmp2(int a,int b){
return a>b;
}
int check(int mid){
for(int i = 1;b[i].d>a[mid];i++){
vis[b[i].l]++;
vis[b[i].r+1]--;
}
int ans;
ans = n+1;
for(int i = 1;i<=n;i++){
vis[i] = vis[i-1]+vis[i];
if(vis[i]){
ans = ans+2;
}
}
for(int i = 0;i<=n+1;i++){
vis[i] = 0;
}
return ans<=t;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>m>>n>>k>>t;
for(int i = 1;i<=m;i++){
cin>>a[i];
}
for(int i = 1;i<=k;i++){
cin>>b[i].l>>b[i].r>>b[i].d;
}
sort(a+1,a+m+1,cmp2);
sort(b+1,b+k+1,cmp);
int l,r;
l = 0;
r = m;
while(l<=r){
int mid;
mid = (l+r)/2;
if(check(mid)){
l = mid+1;
}else{
r = mid-1;
}
}
cout<<r<<"\n";
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...