DP(?)题求解
  • 板块学术版
  • 楼主NightStriker
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/12/10 10:19
  • 上次更新2023/10/26 23:58:43
查看原帖
DP(?)题求解
714084
NightStriker楼主2022/12/10 10:19
由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天,Dzx可以从糖果公司的N件产品中任意选择若干件带回家享用。糖果公司的N件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖果总数是K的整数倍,这样他才能平均地将糖果分给帮助他维护世界和平的伙伴们。当然,在满足这一条件的基础上,糖果总数越多越好。Dzx最多能带走多少糖果呢? 注意:Dzx只能将糖果公司的产品整件带走。

C++DP四级等级考试题,自闭了。

3min想到 O(n2)\mathcal{O}(n^2) 前缀和,5min打完,调了40min。

最有意思的是这玩意题目 70007000 ms,n100n \le 100,看不懂的操作。

然后改成 O(n3)\mathcal{O}(n^3) 的暴力还是WA,然后就想不到更暴力的暴力了。


#include<iostream>
using namespace std;
long long n,k,a[10001],f[10001],ans = -0xAC,cnt;
signed main() {
	cin>>n>>k;
	for(int i = 1;i<=n;i++){
		cin>>a[i];
		f[i] = f[i-1]+a[i];
		cnt+=a[i];
	}
	if(k==1){
		cout<<cnt<<endl;
		return 0;
	}
	for(int l = 1;l<=n;l++){
		for(int r = l;r<=n;r++){
			if((f[r]-f[l])%k==0) ans = max(ans,f[r]-f[l]);
		}
	}
	if(ans==-0xAC) cout<<"0\n";
	else cout<<ans<<endl;
	return 0;
}
 
/*
自闭了。
我怀疑T2数据有点锅。
7000ms,n<=100,你在玩我吧。。。
电子学会配数据这么用心的吗。 
前缀和过不了,暴力也过不了。
/fn/fn/fn/dao
摆烂吧 /cy
*/
2022/12/10 10:19
加载中...