线段 做题记录

因为一个区间内要满足 Ai=kAi1 才会有 AjmodAi=0AimodAj=0
显然我们只用考虑区间内的数。枚举值域,设 fi 表示当前选的区间里最小的数,cnti 表示 i 的出现个数,则有 fi=max(fi,fki+cnti)。答案为 max(fi×i)
时间复杂度 O(VlogV)

点击查看代码
void work() {
	m0(cnt);
	m0(f);
	in1(n);
	inn(a,n);
	For(i,1,n) cnt[a[i]]++;
	int ans=0;
	Rep(i,maxn-1,1) {
		int x=1;
		while(i*x<maxn) {
			f[i]=max(f[i],f[i*x]+cnt[i]);
			x++;
		}
		ans=max(ans,f[i]*i);
	}
	cout<<ans<<'\n';
}
posted @   coding_goat_qwq  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示