社区讨论

求时间复杂度

P9937[USACO21OPEN] Acowdemia I B参与者 5已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@m5gn8djx
此快照首次捕获于
2025/01/03 19:00
去年
此快照最后确认于
2025/11/04 12:02
4 个月前
查看原帖
老师说这个复杂度是 O(n2)O(n^2) ,过不了,是题目水了
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 条回复,欢迎继续交流。

正在加载回复...