《卡》《常》
查看原帖
《卡》《常》
1072502
Zskioaert1106楼主2024/8/23 21:47

rt,赛时推错了只得 8080 的就是我。

然后发现错了尝试打暴力,得 6060:

#include<iostream>
using namespace std;
int a[5000001],n;
bool f[5000001];
int main(){
	f[1]=1;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(i==1)continue;
		int j=1;
		int k=gcd(a[i],a[i-j]);
		if(k!=a[i]&&k!=a[i-j])f[k]=1;
		while(i-j>0){
			j++;
			k=gcd(k,a[i-j]);
			if(k!=a[i-j])f[k]=1;
		}
	}
	for(int i=1;i<=n;i++)cout<<((f[i])?n:n-1)<<' ';
}

很显然是 while(i-j>0) 导致 TLE,然后我赛后把它改成了 while(j<3),就这么水灵灵的 AC 了。

心疼赛时没发现奇技淫巧的我一秒钟

所以这样的是不是应该卡一下

2024/8/23 21:47
加载中...