
DP
文章平均质量分 50
DP
逆袭的小学生
Java后端开发
展开
-
HDU 5464Clarke and problem
问题描述 克拉克是一名人格分裂患者。某一天,克拉克分裂成了一个学生,在做题。 突然一道难题难到了克拉克,这道题是这样的: 给你nn个数,要求选一些数(可以不选),把它们加起来,使得和恰好是pp的倍数(00也是pp的倍数),求方案数。 对于nn很小的时候,克拉克是能轻易找到的。然而对于nn很大的时候,克拉克没有办法了,所以来求助于你。 输入描述 第一行一个整数T(1 \le T \le原创 2015-09-21 21:06:38 · 433 阅读 · 0 评论 -
HDU 5823 color II
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5823题目大意:找出一个集合中每个子集包括它自己的的最少涂色数解题思路:考虑到一个集合中颜色相等的点必定没有边相连,对于一个集合i,我们可以去除其中颜色相等点,再求剩下的点的最小染色数,答案就是剩下的点的最小染色数加1。 具体做法就是预处理出所有没有边相连的点的集合,即独立的集合,对于一原创 2016-08-21 19:59:02 · 354 阅读 · 0 评论 -
USCoj 1396- Select Team 状压DP
要做这道题我推荐先做一下我记录的上一道题 http://blog.youkuaiyun.com/q610376681/article/details/51330654 看懂了那道题再做这个就简单一点了题目链接: http://61.187.179.71:9988/problem.php?id=1396题目大意:给你n个人,每一个人都有一个能力值,要选出k支队伍,每支队伍三个人,一个队伍中任意两个人配合会能原创 2016-05-07 18:44:15 · 802 阅读 · 0 评论 -
Woj 1608 - Calculation 状压dp
思路来自于武大的一个大神 并不是我的。。。题目链接:http://acm.whu.edu.cn/land/problem/detail?problem_id=1608&contest_id=16题目大意:给你n个数,让你找它的子集,子集中的数能通过+或-组成s,问这样的子集最多有多少个,任意两个子集不能相交题目解析:这道题关键是如何枚举子集以及如何判断每个子集能否组成值s,和如何递推枚举子集其实不原创 2016-05-06 12:34:25 · 781 阅读 · 0 评论 -
POJ 3254 Corn Fields 状压DP
题目链接:http://poj.org/problem?id=3254题目大意:给你一个矩阵,矩阵由0和1组成,你要找出矩阵中所有的1的不同组合,但是不能有两个1相邻比如: 1 1 1 0 1 0假设1的标号为 1 2 3 4 则1的个数为0的组合有1种 个数为1的组合有4种 1 ,2 ,3 ,4 个原创 2016-05-16 19:46:11 · 300 阅读 · 0 评论 -
Hdu 1074 Doing Homework 状压dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074题目大意:给你n个科目,每个科目都有截止时间和需要完成的时间,每个科目超过截止时间一天都要在期末考试中扣一分,问所有的科目加起来最少扣多少分解题思路:结合代码说int rec(int s,int v){ if(dp[s][v]>=0) return dp[s][v]; if(s==原创 2016-05-05 15:40:04 · 341 阅读 · 0 评论 -
HDU 1114 Piggy-Bank (完全背包)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1114题目大意: 有一个容量为F-E的储钱罐,给你n种不同的硬币,问在储钱罐装满的情况下,储钱罐里存储的钱最少是多少,如果不能正好存满,那么输出不可能。解题思路:明显是一个完全背包,但是和原本的有些不同,这里的背包求的是最小容量,而且必须装满既然是最小容量 那么dp的时候把max改成min就可以了原创 2016-05-05 09:56:40 · 359 阅读 · 0 评论 -
2016"百度之星" - 初赛(Astar Round2A)Sitting in Line
之前写状压DP都是用递归写的,感觉递归写好理解,没想到这次递归超时了,没办法,看了一下循环写的状压DP1.先说一下我对旅行商问题用循环写状压的理解下面是旅行商问题的核心代码for(int s=0;s<(1<<n);s++) fill(dp[s],dp[s]+n,inf); dp[(1<<n)-1][0]=0; for(int s=(1<<n)-2;s>=0;s--)原创 2016-05-24 19:28:47 · 728 阅读 · 2 评论 -
中南1699 Live Programming
这道题是dp的斜率优化 然而并不会优化 先把未优化的码一下,以后学会了优化再来改题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1699题目大意: 给你n首歌,每首歌都有自己的时间t,分值p,特征值f,每唱一首歌都会得到p分,但会减去本首歌与前一首歌特征值的平方差(第一首不用减),给出总时间T,问最多能得到多少分。解题思路: 首先用so原创 2016-03-26 10:29:17 · 454 阅读 · 0 评论 -
杭电5656 CA Loves GCD
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5656题目大意:给你n个不重复的数字A(1<=n<=1000,1<=A<=1000 ),你每次可以从中选取若干个数字(至少一个),并对它们求GCD,这样会有很多种选法,你需要找出每一种选法的GCD,然后将它们求和并对100000007取余。解题思路:这道题用dp,dp[i][j],i表示前i个数,j表示g原创 2016-04-03 17:29:31 · 456 阅读 · 0 评论 -
HDU 5816 Hearthstone
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5816题目大意: 你在玩炉石,对手n滴血,你每次抽的卡有两种类型,一种类型是再抽两张,另一种类型是能打对手x点伤害,x会一一给出,问能一回合击败对手的可能性是多少。解题思路:这道题是3^n的算法。。。 i代表当前抽到牌的集合 dp[i]代表抽到这种牌有多少种抽法,枚举每一种情况,如果原创 2016-08-21 20:20:33 · 382 阅读 · 0 评论