HDU 4301 Divide Chocolate
这个题在暑假集训的时候做组队训练赛的时候做过,当时状态方程是我推出来的,但是WA了10+次吧。但是这次写,还是WA了很多次。
所以总结一下,DP的话,能用递推写还是尽量用递推写吧,记忆化写的话可能会出现问题,这个应该是我水平问题吧。
方程是这样的:dp(i,j,1) = (dp(i - 1,j - 2,1) + dp(i - 1,j - 1,1) * 2 + dp(i - 1,j,1) + dp(i - 1,j - 2,0) + dp(i - 1,j - 1,0) * 2) % MOD;
dp(i,j,0) = (dp(i - 1,j,0) + dp(i - 1,j - 1,0) + dp(i - 1,j - 1,1)+ dp(i - 1,j,1) * 2) % MOD;
dp(i,j,0)表示当切到第i层切到j块时第i层中间的巧克力是不连着的切法的总数。
dp(i,j,1)表示当切到第i层切到j块时第i层中间的巧克力是连着的切法的总数。
下面贴代码吧:
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 #define MOD 100000007 6 int d[1020][2040][2]; 7 8 int dp(int i,int j,int k) 9 { 10 if(j <= 0) return 0; 11 12 int &ans = d[i][j][k]; 13 14 if(ans != -1) return ans; 15 16 if(i * 2 < j) 17 { 18 ans = 0; 19 return ans; 20 } 21 22 if(k == 1) 23 { 24 ans = (dp(i - 1,j - 2,1) + dp(i - 1,j - 1,1) * 2 + dp(i - 1,j,1) 25 + dp(i - 1,j - 2,0) + dp(i - 1,j - 1,0) * 2) % MOD; 26 return ans; 27 } 28 29 else if(k == 0) 30 { 31 ans = (dp(i - 1,j,0) + dp(i - 1,j - 1,0) + dp(i - 1,j - 1,1) 32 + dp(i - 1,j,1) * 2) % MOD; 33 return ans; 34 } 35 } 36 37 int main() 38 { 39 int ncase,n,k; 40 scanf("%d",&ncase); 41 memset(d,-1,sizeof(d)); 42 d[1][1][0] = 1; 43 d[1][1][1] = 0; 44 d[1][2][0] = 0; 45 d[1][2][1] = 1; 46 while(ncase--) 47 { 48 scanf("%d%d",&n,&k); 49 printf("%d\n",(dp(n,k,0) + dp(n,k,1)) % MOD); 50 } 51 return 0; 52 }
转载于:https://www.cnblogs.com/zhexipinnong/archive/2012/11/13/2769000.html
HDU 4301 Divide Chocolate相关推荐
- hdu 5783——Divide the Sequence
题意及思路: 求一个序列的分段个数,使得每一段的前缀和为0,如果正向思维,那么解法是从前往后遍历,每遇到一个负数就向前遍历直到>=0(这样贪心保证了序列尽可能多),但是这样最坏的情况是n^2的, ...
- 在python中requests模块怎么安装_Python requests模块在Windows下安装
发现一个爬虫库太方便了,而且支持python3! 安装方法在http://docs.python-requests.org/en/latest/user/install/#install很详细 只不过 ...
- java 分享巧克力_[leetcode 双周赛 11] 1231 分享巧克力
1231 Divide Chocolate 分享巧克力 问题描述 你有一大块巧克力,它由一些甜度不完全相同的小块组成.我们用数组 sweetness 来表示每一小块的甜度. 你打算和 K 名朋友一起分 ...
- leetcode刷题规划
LeetCode精华题目列表[刷题规划系列] – TuringPlanet 目录 算法题到底在考察什么? 题目列表 Array String Linked List Queue Stack Advan ...
- html中标签的src属性值,HTML frame 标签的 src 属性
Logstash实践: 分布式系统的日志监控 文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用 ...
- 夜深人静写算法(十二)- 模拟退火
一.引例 1.函数最值 函数最值分为函数最大值和函数最小值,最小值即定义域内函数的最小值, 最大值即定义域内函数的最大值.函数最大(小)值的几何意义为函数图像的最高(低) ...
- HDU 2282 Chocolate (最小费用最大流)
HDU 2282 Chocolate (最小费用最大流) #include <iostream> #include <cstdio> #include <queue&g ...
- 多校第六场 HDU 4927 JAVA大数类+模拟
HDU 4927 题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1−ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
最新文章
- 西南石油大学计算机二级成绩查询,西南石油大学本科学生成绩自助查询打印终端管理办法...
- Mathematica 对曲线进行拟合
- windows中search driver的顺序
- protect a health
- 机器学习(一):BP神经网络(含代码及注释)
- window启动过程讲解--PPT截图[张银奎]
- 外点罚函数matlab程序_关于图像轮廓识别的程序实现
- vb.net机房收费系统之组合查询
- 需要两张图片合成一个PDF文件(两页)
- 华为路由器IPv6 over IPv4 GRE隧道配置详解
- 【概率密度函数】简介概率论中的概率密度函数
- 全球及中国冻干菠萝行业市场运行模式及未来发展前景分析报告2022-2028年
- 一个球绳命最后的高度哈哈
- python自动化(六)持续集成:2.Jenkins技术讲解
- 少儿编程启蒙课程9:善用变量 拥抱变化
- 三、vue3--生命周期、Hook函数、 toRef和toRefs、其他的组合式API
- 蛮力算法解决问题(c语言)
- ALLEGRO 中导入PADS的asc文件时显示pads_in.log does not exit
- 微信小程序-电影app程序遇到得问题
- android-studio推荐模拟器,Android studio 三大模拟器比较,强烈推荐第三种
热门文章
- 作业3_interview_傅志阳_1101210634
- Real Application Testing Database Replay、SPA的价格和介绍
- 从自卑的阴影中走出来
- [Java] 蓝桥杯BASIC-23 基础练习 芯片测试
- 【note】Swift之闭包表达式的几种简化缩写形式
- oracle数据设置为ull,Oracle _11g_使用手册_自备
- 如何:删除Word 2010中的“向下箭头”
- 修改ranger ui的admin用户登录密码踩坑小记
- [nRF51822] 5、 霸屏了——详解nRF51 SDK中的GPIOTE(从GPIO电平变化到产生中断事件的流程详解)...
- 图像处理工具包ImagXpress使用教程:多页TIFF编辑API的使用(二)