关于本题的民间数据
  • 板块学术版
  • 楼主littleQCY
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/26 23:16
  • 上次更新2024/10/26 23:17:21
查看原帖
关于本题的民间数据
1220351
littleQCY楼主2024/10/26 23:16

这道题的民间数据过于简单。
首先来说说我的代码,

//2024-10-26 22:54:20
#include <cstdio>
#include <algorithm>
using namespace std;

int n,mobs[114514];
bool attacked[114514];
int main(){
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&mobs[i]);
	}
	sort(mobs,mobs+n);
	int ans=0,last=-1;
	for(int i=0;i<n;i++){
		for(int j=(last==-1?0:last);last<n;last++,j++){
			if(mobs[last]>mobs[i]&&(!attacked[j])&&(i!=j)){
				attacked[last]=1;
				ans++,last++;
				break;
			}
		}
	}
	printf("%d",n-ans);
	return 0;
}

这是一份 O(nk)O(nk) 时间复杂度的代码,其中 kk 在没有被特殊构造的数据里是一个很小的数,大概在 10103030 间。但考试时 CCF 提供的测试样例点三中里有类似于下列输入样例的数据:

1000001 2 2 2 2 2 2 2 3 2 3 2 3 2 3 2 3 2 2 3 3 3 3 2 2 2 3 3 2 2 3 3 3 2 2 2 3 3 3 2 2 2 3 3 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3...

这种数据可以使 kk 达到大约 n/2n/2 ,从而使优化变得几乎不存在,也就不可能满分。但是在洛谷的民间数据当中,这份代码提交可以得满分,建议改良数据。

友情提示:我在考场上写这份代码运行第三个测试点时使用了 4s4s 的时间。

2024/10/26 23:16
加载中...