由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天,Dzx可以从糖果公司的N件产品中任意选择若干件带回家享用。糖果公司的N件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖果总数是K的整数倍,这样他才能平均地将糖果分给帮助他维护世界和平的伙伴们。当然,在满足这一条件的基础上,糖果总数越多越好。Dzx最多能带走多少糖果呢? 注意:Dzx只能将糖果公司的产品整件带走。
C++DP四级等级考试题,自闭了。
3min想到 O(n2) 前缀和,5min打完,调了40min。
最有意思的是这玩意题目 7000 ms,n≤100,看不懂的操作。
然后改成 O(n3) 的暴力还是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
*/