2989:糖果(2.6基本算法之动态规划)
来源:互联网 发布:dd linux命令复制磁盘 编辑:程序博客网 时间:2024/06/05 16:48
2989:糖果
总时间限制: 1000ms 内存限制: 65536kB
描述
由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天,Dzx可以从糖果公司的N件产品中任意选择若干件带回家享用。糖果公司的N件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖果总数是K的整数倍,这样他才能平均地将糖果分给帮助他维护世界和平的伙伴们。当然,在满足这一条件的基础上,糖果总数越多越好。Dzx最多能带走多少糖果呢?
注意:Dzx只能将糖果公司的产品整件带走。
输入
第一行包含两个整数N(1<=N<=100)和K(1<=K<=100)
以下N行每行1个整数,表示糖果公司该件产品中包含的糖果数目,不超过1000000
输出
符合要求的最多能达到的糖果总数,如果不能达到K的倍数这一要求,输出0
样例输入
5 7
1
2
3
4
5
样例输出
14
提示
Dzx的选择是2+3+4+5=14,这样糖果总数是7的倍数,并且是总数最多的选择。
不会做,也没看懂
代码里面的memset为什么要这样设置呢?
http://blog.csdn.net/wx_t91/article/details/52713882
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;const int maxn=102;int n,k,a[maxn],d[maxn][maxn],sum=0;//f(i,j)=前i个糖果选一些构成j%k的最大值 //f(i,j)=max(f(i,j),f(i-1,(j-a[i]%k+k)%k)+a[i];int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(d,-20,sizeof(d)); for(int i=0;i<=n;i++) { d[i][0]=0; } for(int i=1;i<=n;i++) for(int j=0;j<k;j++) { d[i][j]=d[i-1][j]; d[i][j]=max(d[i][j],d[i-1][(j-a[i]%k+k)%k]+a[i]); } printf("%d",d[n][0]); return 0;}
阅读全文
0 0
- 2989:糖果(2.6基本算法之动态规划)
- 【openjudge 2.6基本算法之动态规划】(合集)
- 2718:移动路线(2.6基本算法之动态规划)
- 2728:摘花生(2.6基本算法之动态规划)
- 2985:数字组合(2.6基本算法之动态规划)
- 3531:判断整除(2.6基本算法之动态规划)
- 8462:大盗阿福(2.6基本算法之动态规划)
- 3531:判断整除(2.6基本算法之动态规划)
- 动态规划之糖果分配
- 蓝桥杯 ADV-205算法提高 拿糖果(动态规划)
- |NOIOJ|动态规划|2989:糖果
- 算法提高 拿糖果(动态规划)
- 蓝桥杯--算法提高:拿糖果(动态规划)
- Openjudge 2.6基本算法之动态规划:8782乘积最大
- Openjudge 2.6基本算法之动态规划:2718 移动路线
- Openjudge 2.6基本算法之动态规划:1996:登山
- [OpenJudge] 2.6基本算法之动态规划 摘花生
- 1481:Maximum sum(2.6基本算法之动态规划)
- 原生js实现单面应用程序spa
- DB2和Oracle区别
- Eclipse/IDEA快捷键
- Linux 文件相关命令
- 机器学习(1)-KNN算法理解
- 2989:糖果(2.6基本算法之动态规划)
- 存储类型、ADT、纯C去引用、算法及设计原则、时间复杂度---基本概念
- mybatis_study03
- nodeJs之准备工作
- 网络框架okHttp源码分析
- HDU 4436 str2int
- TypeScript入门知识三(表达式和循环)
- Dialog 使用方法详解
- 排序算法小结