随笔分类 -  ACM-dp

摘要:题意:一只吸血鬼,有n条路给他走,每次他随机走一条路,每条路有个限制,如果当时这个吸血鬼的攻击力大于等于某个值,那么就会花费t天逃出去,否则,花费1天的时间,并且攻击力增加,问他逃出去的期望用记忆化搜索做,很好理解。 1 #include 2 #include 3 #include 4 #inclu... 阅读全文
posted @ 2015-04-13 09:23 miao_a_miao 阅读(152) 评论(0) 推荐(0)
摘要:转自:cxlove题目:有2^n个队,相邻的两两打淘汰赛,,求最后哪个队夺冠的概率最大dp[i][j]表示第i轮的时候,第j去支队伍赢的概率。那么dp[i][j]的前提就是i-1轮的时候,j是赢的,而且第i轮赢了对方接下来就是找到第i轮的时候,他的可能队手通过二进制可以发现规律,所有高位是一样的,第... 阅读全文
posted @ 2015-04-11 10:23 miao_a_miao 阅读(126) 评论(0) 推荐(0)
摘要:注意递推过程中的顺序题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率问 每队至少解出一题且冠军队至少解出N道题的概率。解析:DP设dp[i][j][k]表示第i个队在前j道题中解出k道的概率则:dp[i][j][k]=dp[i][j-1][k-1]*p[j][k]+dp[i][... 阅读全文
posted @ 2015-04-11 09:22 miao_a_miao 阅读(137) 评论(0) 推荐(0)
摘要:题意:在一个R*C的迷宫里,一个人在最左上角,出口在右下角,在每个格子上,该人有几率向下,向右或者不动,求到出口的期望现在对概率dp有了更清楚的认识了设dp[i][j]表示(i,j)到(R,C)需要消耗的能量则:dp[i][j]=p1[i][j]*dp[i][j]+p2[i][j]*dp[i][j+... 阅读全文
posted @ 2015-04-09 22:19 miao_a_miao 阅读(165) 评论(0) 推荐(0)
摘要:题意:飞行棋,有0~n-1个点,有些点可以直接通向其它点,每次通过掷筛子前进,求从起点到终点的期望由于求的是期望,所以需要逆推整体就是求出每个点状态的期望,然后递推到总的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #includ... 阅读全文
posted @ 2015-03-26 00:24 miao_a_miao 阅读(84) 评论(0) 推荐(0)
摘要:题意:有几个砖,给出高度,能放的最大高度和数目,求这些砖能垒成的最大高度依据lim排个序,按一层一层进行背包 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 cons... 阅读全文
posted @ 2015-03-22 22:33 miao_a_miao 阅读(122) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int maxn=5001; 9 int n,m,t;10 short dp[maxn][maxn];1... 阅读全文
posted @ 2015-03-22 15:10 miao_a_miao 阅读(124) 评论(0) 推荐(0)
摘要:题意:添加最少的字符使之成为回文串 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int maxn=5001; 9 int n,m,t;10 short... 阅读全文
posted @ 2015-03-22 14:51 miao_a_miao 阅读(125) 评论(0) 推荐(0)
摘要:dp记录的是不是11串 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 const int maxn=1000005; 9 const int mod=1000000... 阅读全文
posted @ 2015-03-22 11:12 miao_a_miao 阅读(124) 评论(0) 推荐(0)
摘要:735 3 4 125 6 5 3 350 //735的最大额,3种,4个125,6个5,3个350633 4 500 30 6 100 1 5 0 1735 00 3 10 100 10 50 10 1073563000 1 #include 2 #include 3 #... 阅读全文
posted @ 2015-03-21 21:37 miao_a_miao 阅读(146) 评论(0) 推荐(0)
摘要:题意:价值分别为1,2,3,4,5,6的物品个数分别为a[1],a[2],a[3],a[4],a[5],a[6],问能不能分成两堆价值相等的。解法:转化成多重背包 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6... 阅读全文
posted @ 2015-03-21 21:19 miao_a_miao 阅读(160) 评论(0) 推荐(0)
摘要:题意:给一个储钱罐,已知空的储钱罐和装了硬币的储钱罐的质量。然后给了n种硬币的质量和价值。问储钱罐里最少有多少钱。解法:完全背包。注意要初始化为 INF,要正好装满,如果结果是INF,输出This is impossible. 1 #include 2 #include 3 #include 4 #... 阅读全文
posted @ 2015-03-20 22:23 miao_a_miao 阅读(185) 评论(0) 推荐(0)
摘要:也是好题,带限制的01背包,先排序,再背包这题因为涉及到q,所以不能直接就01背包了。因为如果一个物品是5 9,一个物品是5 6,对第一个进行背包的时候只有dp[9],dp[10],…,dp[m],再对第二个进行背包的时候,如果是普通的,应该会借用前面的dp[8],dp[7]之类的,但是现在这些值都... 阅读全文
posted @ 2015-03-20 21:16 miao_a_miao 阅读(158) 评论(0) 推荐(0)
摘要:好牛b的思路题意:一系列物品,用二辆车运送,求运送完所需的最小次数,两辆车必须一起走解法为状态压缩DP+背包,本题的解题思路是先枚举选择若干个时的状态,总状态量为1 2 #include 3 #include 4 #include 5 #include 6 using namespace std; ... 阅读全文
posted @ 2015-03-19 22:29 miao_a_miao 阅读(270) 评论(0) 推荐(0)
摘要:求每个状态里的k优解,然后合并/*HDU 2639求01背包的第k大解。合并两个有序序列*/#include#include#include#includeusing namespace std;const int MAXN=110;int dp[1010][50];//dp[i][j]表示容量为... 阅读全文
posted @ 2015-03-19 13:04 miao_a_miao 阅读(145) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/liuqiyao_01/article/details/8753686题意:这是又是一道01背包的变体,题目要求选出一些牛,使smartness和funness值的和最大,而这些牛有些smartness或funness的值是负的,还要求最终的smart... 阅读全文
posted @ 2015-03-19 00:14 miao_a_miao 阅读(216) 评论(0) 推荐(0)
摘要:刷到背包了,背包是一类问题,开个总结记录贴1 01 背包问题题意:有N 件物品和一个容量为V 的背包。放入第i 件物品耗费的费用是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大思路:用子问题定义状态:即f[i,v] 表示前i 件物品恰放入一个容量为v 的背包可以获得的最大价值。则其状... 阅读全文
posted @ 2015-03-18 22:05 miao_a_miao 阅读(273) 评论(0) 推荐(0)
摘要:为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?Sample Input1 8 2 2 100 4 4 100 2Sample Outp... 阅读全文
posted @ 2015-03-10 10:18 miao_a_miao 阅读(195) 评论(0) 推荐(0)
摘要:不好理解,先多做几个再看此题是很基础的斜率DP的入门题。题意很清楚,就是输出序列a[n],每连续输出的费用是连续输出的数字和的平方加上常数M让我们求这个费用的最小值。设dp[i]表示输出前i个的最小费用,那么有如下的DP方程:dp[i]= min{ dp[j]+(sum[i]-sum[j])^2 +... 阅读全文
posted @ 2015-03-07 11:16 miao_a_miao 阅读(204) 评论(0) 推荐(0)
摘要:题意:是有n个洞组成一棵树,你有m个士兵,你从1号房间开始攻打,每个洞有a个"bugs"和b的价值。你的一个士兵可以打20个"bugs",为了拿到这个洞的价值b你必须留下k个士兵消灭这个洞的所有"bugs"(k*20>="bugs"的数量,且留下的士兵不可以再去攻打其他的洞,且必须攻打了前面的洞才可... 阅读全文
posted @ 2015-03-03 10:57 miao_a_miao 阅读(163) 评论(0) 推荐(0)