社区讨论
求时间复杂度
P9937[USACO21OPEN] Acowdemia I B参与者 5已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @m5gn8djx
- 此快照首次捕获于
- 2025/01/03 19:00 去年
- 此快照最后确认于
- 2025/11/04 12:02 4 个月前
老师说这个复杂度是 ,过不了,是题目水了
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
void read(int &x){
x=0;bool f=0;char ch=getchar();
while(ch>'9'||ch<'0'){
if(ch=='-')f=1;
ch=getchar();
}do{x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}while(ch>='0'&&ch<='9');
x=f?-x:x;
}
int n,t,a[100001],s;
signed main(){
read(n),read(t),a[0]=114514;
for(int i=1;i<=n;i++)read(a[i]);
sort(a+1,a+1+n,greater<int>());
for(int i=1;i<=n;i++){
if(i-a[i]<1)s=i;
else if(i-a[i]==1&&t){
t--;
int j=i-1;
while(i-a[j--]==1){
if(t)t--;
else{t=-114514;break;}
}if(t==-114514)break;
s=i;
}else break;
}cout<<s;
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...