数据水了
查看原帖
数据水了
895690
gghack_Nythix楼主2024/8/23 23:16

关于我T了80pts,心想 nlog⁡nn \log n 随便过,被现实狠狠打脸,于是手动限制 log⁡n\log n 次结果过了?

#include<bits/stdc++.h>
using namespace std;
bool fg = 1;
int a[5000005],ans[5000005];
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin >> n;
	for(int i = 1;i <= n;++i) cin >> a[i],ans[i] = n - 1;
	for(int i = 1;i < n;++i) {
		int j = i,minn = a[i];
		int gcd = a[i],cnt = 0;
		while(1) {
			++j,++cnt;
			if(j > n || cnt > 15) break;//手动限制
			int pre = gcd;
			gcd = __gcd(gcd,a[j]);
			if(gcd == 1) {
				if(minn != gcd) ans[gcd] = n;
				break;
			}
			minn = min(minn,a[j]);
			if(minn != gcd) ans[gcd] = n;
		}
	}
	cout << n << " ";
	for(int T = 2;T <= n;++T) cout << ans[T] << ' ';
	return 0;
}
2024/8/23 23:16
加载中...