题目链接:http://noi.openjudge.cn/ch0206/2989/

首先,数据很大,直接用背包会re。

这里增加的是对%k 的余数维度。f[i][j] 表示前 i 种糖果取到总颗数模 k 余数为 j 的最大颗数。

注意一定要先将 f[i-1][j] 转移到 f[i][j] ,再枚举余数dp,不然会有重叠。答案是 f[n][0];

#include <bits/stdc++.h>
using namespace std; int a[];
int d[];
int f[][]; /*
int main()
{
int n,k;
int sum = 0;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) {
scanf("%d",&a[i]);
sum+=a[i];
} int t = sum/k;
sum = t*k;
for(int i=1;i<=n;i++) {
for(int j=sum;j>=0;j--) {
if(j>=a[i]) {
d[j] = max(d[j],d[j-a[i]]+a[i]);
}
}
}
bool flag = false;
for(;;) {
if(d[sum]%k==0) {
printf("%d\n",d[sum]);
flag = true;
break;
}
else sum = sum - k;
}
if(!flag)
puts("0"); return 0;
}
*/ int main()
{
int n,k;
scanf("%d%d",&n,&k); memset(f,,sizeof(f));
for(int i=; i<=n; i++)
scanf("%d",&a[i]);
for(int i=; i<=n; i++)
{
for(int q=; q<=k-; q++)
f[i][q]=f[i-][q];
for(int j=; j<=k-; j++)
if(f[i-][j]+a[i]>f[i][(f[i-][j]+a[i])%k])
f[i][(f[i-][j]+a[i])%k]=f[i-][j]+a[i];
}
printf("%d",f[n][]);
return ;
}

noi 2989 糖果的更多相关文章

  1. NOI 动态规划题集

    noi 1996 登山 noi 8780 拦截导弹 noi 4977 怪盗基德的滑翔翼 noi 6045 开餐馆 noi 2718 移动路线 noi 2728 摘花生 noi 2985 数字组合 no ...

  2. 2016.4.3 动态规划NOI专练 王老师讲课整理

    1.6049:买书 总时间限制:  1000ms 内存限制:  65536kB 描述 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案?(每种书可购买 ...

  3. NOIWC前的交流题目汇总

    RT 2018.12.27 i207M:BZOJ 4695 最假女选手 以维护最大值为例,记录最大值和严格次大值和最大值的出现次数,然后取min的时候递归到小于最大值但大于次大值修改,这个就是最重要的 ...

  4. noi 1944 吃糖果

    题目链接:http://noi.openjudge.cn/ch0206/1944/ 根据第一天吃的个数递推,发现这个递推关系很像斐波那契数列. http://paste.ubuntu.com/2340 ...

  5. 【noi 2.6_2989】糖果(DP)

    题意:求取到总和为K的倍数的糖果的最大值. 解法:用模K的余数作为一个维度,f[i][j]表示在前i种糖果中取到总颗数模K余j的最大总颗数. 注意--f[i-1][j]要正常转移,而其他要之前的状态存 ...

  6. NOI.AC NOIP模拟赛 第一场 补记

    NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...

  7. 【FINAL】NOI

    我就是复习一下..根本就不是什么题解...谁也看不懂的... NOI2007 社交网络         最短路 货币兑换         斜率优化动态规划 项链工厂         线段树 生成树计数 ...

  8. 原生js可爱糖果数字时间特效

    效果展示:http://hovertree.com/texiao/js/35/ 数字采用漂亮的糖果皮肤设计 效果图: 代码如下: <!DOCTYPE html> <html> ...

  9. UOJ #58 【WC2013】 糖果公园

    题目链接:糖果公园 听说这是一道树上莫队的入门题,于是我就去写了--顺便复习了一下莫队的各种姿势. 首先,我们要在树上使用莫队,那么就需要像序列一样给树分块.这个分块的过程就是王室联邦这道题(vfle ...

随机推荐

  1. iPhone6的CSS3媒体查询

    @media only screen and (min-device-width: 375px) and (max-device-width: 667px) and (orientation : po ...

  2. log4net 添加自定义日志到数据库

    添加操作日志到数据库举例: (一)建立数据库的操作日志表,如下我建立了一个简单的日志表 (二)配置文件中的配置如下 <log4net> <!--错误日志记录数据库--> < ...

  3. 手机自带的显示基站命令(android手机定位,iphone基站定位)

    手机自带的显示基站命令(安卓手机定位,苹果手机基站定位) 分类: 通信和网络2012-02-07 17:48 1734人阅读 评论(0) 收藏 举报 手机htciphone中兴三星网络 安卓手机自带快 ...

  4. 使用dbms_crypto包加密关键列数据

    对于业务系统中常见的需要加密的列我们可以在应用层来实现,也可以在数据库层实现,自己验证了一下使用dbms_crypto包来封装函数实现关键列的加密. 1.数据库版本 SQL> select * ...

  5. 需要注意学习.net过程的要点

    基础部分 C# 基础语法 OOP的概念,面向对象的理解 继承 封装 多态 ASP.NET MVC (Web Form 用的越来越少,如果你不熟悉,可以不看) JavaScript 基础语法 如何在HT ...

  6. C#中ref和out的使用与区别

    C#中ref关键字和out关键字所实现的功能差不多,都是指定一个形参按照引用传递而不是实参的副本传递.但是二者适用场景还是有些区别的:out适合用在需要retrun多个返回值的地方,而ref则适合用在 ...

  7. Thinking in Java——笔记(1)

    Introduction To Obejct The progress of abstraction But their primary abstraction still requires you ...

  8. Git的常用操作

    $ git log //查看commit记录 $ git add <file> //添加文件到commit中 .代表所有改动的文件 $ git commit -m 'meesage' // ...

  9. 微信蓝牙BLE接入调试指引 硬件篇

    1 平台框架简介 微信蓝牙BLE由三个模块组成,分别是蓝牙设备.微信和第三方服务器,如下图: 蓝牙设备与微信之间的通信是通过蓝牙GATT协议进行. 微信与第三方服器之间的通信是通过网络http 接口进 ...

  10. [BS-29] 给UIView添加背景图片

    给UIView添加背景图片 //默认情况下只能设置UIView的背景颜色,不能给UIView设置背景图片,但通过绘图知识可以做到 - (void)drawRect:(CGRect)rect { [su ...