T1正解是啥?
  • 板块学术版
  • 楼主what_can_I_do
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/7/30 18:08
  • 上次更新2023/11/3 06:52:51
查看原帖
T1正解是啥?
658973
what_can_I_do楼主2023/7/30 18:08

我只拿了60分。

#include<bits/stdc++.h>
using namespace std;
int n,fa[10000010],tot=0;
long long ans=0;
inline int find(int k)
{
	if(k==fa[k]) return fa[k];
	else return fa[k]=find(fa[k]);
}
int main()
{
	scanf("%d",&n);
	for(register int i=1;i<=n;i++) fa[i]=i;
	for(register int i=n/2;i>=1;i--)
	{
		for(register int j=i*2;j<=n;j+=i)
		{
			int fx=find(i),fy=find(j);
			if(fx==fy) continue;
			fa[fx]=fy,ans+=i,tot++;
			if(tot==n-1) break;
		}
		if(tot==n-1) break;
	}
	printf("%lld",ans);
	return 0;
}
2023/7/30 18:08
加载中...