
DP
文章平均质量分 74
smmrSangria
这个作者很懒,什么都没留下…
展开
-
hdu5691_Sitting in Line_状压dp
题目大意:对一系列有正有负的数进行排序,相邻的数相乘的和最大。并且可指定某些数字的排列位置。思路:建立无向图,每个数为一个节点,边权的值为连接的节点的两数的乘积。找到一条经过每一个节点一次的路径,使路径的边权之和最大。状态转移方程: dp[s][i]=max(dp[s][i], dp[s | 1 #include #include #include #define INF 0原创 2017-04-28 19:52:40 · 336 阅读 · 1 评论 -
ZOJ3380_Patchouli's Spell Cards_概率DP
题目大意用n个数填m个位置,每个位置上出现每个数的概率相同,求存在一个数再序列中出现的次数 >=l 的概率。思路求概率转化为求 -> 符合要求的序列的数量 / 总序列数量 -> (总序列数量 - 不符合要求的序列的数量) / 总序列数量不符合要求的序列的数量即序列中每个数出现不超过ldp[i][j] 表示用前i个数添m个位置上的任意j个位置的情况数量dp[i][j] =...原创 2018-03-08 08:04:49 · 255 阅读 · 0 评论 -
SGU495_Kids and Prizes_概率DP
题目大意n个装有物品的盒子,m个人,依次以等概率选择盒子从中取出物品并放回盒子,求取出物品个数的期望。思路一类期望题,前面的操作的结果会对此次的操作产生影响,对于连续和离散的随机变量可分别用积分和求和来求期望。用到期望的性质公式: E(A + B) = E(A) + E(B)A: 前 i - 1 次取出物品的期望B: 第i次期望dp[i] = dp[i - 1] + Σp(x) * (n - x)...原创 2018-03-08 09:17:45 · 215 阅读 · 0 评论 -
HDU1693_Eat the Trees_插头DP
题目大意插头DP模板题 可形成多个闭合回路#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define INF 0x3f3f3f3f#define rep0(i, n) for (int i =...原创 2018-02-19 13:15:41 · 429 阅读 · 0 评论 -
hdu4652_Dice_概率DP
题目大意给以m个面的色子,求:0.多次抛掷中最后n次点数相同的抛掷次数的期望1.多次抛掷中最后n次点数各不相同的抛掷次数的期望思路0.概率DP的倒推求法,设dp[i]为最后i次点数相同直到最后n次点数相同还需要抛掷的次数的期望dp[i] = 1 / m * dp[i + 1] + (1 - 1 / m) * dp[1] + 1边界:dp[n] = 0可用等比数列求和公式求通项1.设dp[i]为最后...原创 2018-03-14 19:27:04 · 247 阅读 · 0 评论 -
zoj3329_One Person Game_概率DP
题目大意三个色子分别有k1 k2 k3 个面,标号都为1~ki,落到各面的概率相等。从0开始每抛一次色子前进三个色子的点数和个单位,直到前进至大于n。当抛出a,b,c时,回到0。求抛色子的次数的期望。思路求期望时适宜用时间上晚于此状态的状态来更新此状态。设此状态为p,并以一定的概率转移到a,b,c状态,则 dp[p] 可用 pr(p, a) * dp[a] + pr(p, b) * dp[b] +...原创 2018-03-13 13:54:13 · 241 阅读 · 0 评论 -
bzoj_世界树_虚树_树形DP_lca_倍增
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#d...原创 2018-04-25 19:51:47 · 337 阅读 · 0 评论 -
hdu5282_Senior's String_dp_变形lcs
题意设L为字符串x和y的lcs长度,求x的不连续子串中能与y匹配的子串数。思路lcs[i][j]: x[1 ~ i] 和 y[1 ~ j] 的最长公共子序列长度 dp[i][j]: x[1 ~ i] 和 y[1 ~ j] 范围内,x[1 ~ i] 的长度为 lcs[i][j] 的不连续子串中能与 y[1 ~ j] 匹配的子串数。 当 x[i] != y[j] 时,对长度为 lcs[...原创 2018-07-25 19:31:58 · 302 阅读 · 0 评论 -
hdu3466_Proud Merchants_排序_01背包
题意n个物品,分别价值vi,价格pi,要求在买i物品时至少有qi的钱。思路考虑普通的01背包:dp[ i ][ j ] = max(dp[ i - 1 ][ j ], dp[ i - 1 ][ j - p[i] ] + v[i])可理解为当手中有 j 的钱时考虑是否买物品i:dp[ i - 1 ][ j ]:不买 i,仍用 j 的钱去买前 i - 1 件物品;dp[ i -...原创 2018-07-27 14:37:56 · 236 阅读 · 0 评论 -
poj2411_Mondriaan's Dream_状压DP(插头)
题目大意用 1 * 2 的骨牌密铺 h * w 的方格思路用k记录考虑第(i, j)时的复杂状态,k & (1 << (j - 1)) 为1时表示此时已被之前的操作所覆盖(来自 (i - 1, j) 或 (i, j - 1)),为0时未被覆盖三维dp数组,一直超时,降维后AC#include <iostream>#include <cstdio>#i...原创 2018-02-27 20:53:32 · 351 阅读 · 0 评论 -
hdu6035_Colorful Tree_(树形DP)
#include #include #include #include #include #include #define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#define rep1(i, n) for (int i = 1; i <= n; i++)#define rep_0(i, n) fo原创 2017-11-09 21:58:50 · 383 阅读 · 0 评论 -
HDU5834_Magic boy Bi Luo with his excited tree_树形DP
#include #include #include #include #include #include #define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#define rep1(i, n) for (int i = 1; i <= n; i++)#define rep_0(i, n) fo原创 2017-09-22 09:06:33 · 313 阅读 · 0 评论 -
POJ3254_Corn Field_状压DP
题目大意:给一个m*n的矩阵,为1的地方可以栽种,0处不可,栽种时不可相邻,输出共有几种栽种方法。思路:以每一行的栽种方法作为状态压缩,用数组存下在没有限制的情况下,一行中没有相邻栽种的状态,枚举后自身和自身的移动一位(输入矩阵的同时建立掩码。状态转移:dp[book[j]][i] += dp[book[k]][i - 1]枚举在i行可行的状态book[j],dp为在该原创 2017-05-01 08:53:36 · 599 阅读 · 0 评论 -
HDU_5945_Fxx and game_DP_单调队列
题目大意给定x t k,求x经过操作到达1的最小次数。操作方法:1、当x能被k整除时,可将x除k2、把x减去一个小于等于t的数思路用单调队列优化dp,由小到大对每个数进行dp直到到达x。每次考虑一个数是,从队列开头删去和这个数差值大于t的元素,如果可被k整除dp[i] = min(dp[i], dp[i / k] + 1)然后再从队列开头取元素优化次数的dpdp原创 2017-05-24 18:05:44 · 334 阅读 · 0 评论 -
度度熊与邪恶大魔王_DP
题目大意:n个魔王各自具有生命值(a),防御力(b),有m种攻击,分别需要k的晶石,能产生p的攻击,求最少需要多少晶石。思路:防御力范围小循环防御力#include #include #include #define INF 0x3f3f3f3f#define MAXN 100000 + 10#define MAXM 1000 + 10#define MAXA 1000 +原创 2017-08-10 14:36:08 · 365 阅读 · 1 评论 -
CF_D. Choosing Capital for Treeland_树形DP
#include #include #include #include #include #include #define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#define rep1(i, n) for (int i = 1; i <= n; i++)#define rep_0(i, n) fo原创 2017-09-17 15:57:59 · 314 阅读 · 0 评论 -
hdu1561_The more, The Better(树形DP/背包)
#include #include #include #include #include #include #define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#define rep1(i, n) for (int i = 1; i <= n; i++)#define rep_0(i, n) fo原创 2017-09-26 15:04:32 · 254 阅读 · 0 评论 -
CodeForces 22b_Bargaining Table_dp(暴力)
题目大意给出一个01矩阵求其中矩形的最大周长思路暴力枚举矩形左上角顶点在其基础上枚举右下角用pre维护前一行出现第一个1之前的位置#include #include #include #include #include #define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#define原创 2017-09-02 09:29:27 · 337 阅读 · 0 评论 -
CodeForces 372b_Counting Rectangles is Fun_dp(暴力)
题目大意给出01矩阵求以(a, b) (c, d) 为左上和右下的矩形中的矩形(由0构成)的个数#include #include #include #include #include #define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#define rep1(i, n) for (int原创 2017-09-02 09:41:30 · 298 阅读 · 0 评论 -
poj2152_Fire(树形DP)
#include #include #include #include #include #include #define INF 0x3f3f3f3f#define rep0(i, n) for (int i = 0; i < n; i++)#define rep1(i, n) for (int i = 1; i <= n; i++)#define rep_0(i, n) fo原创 2017-09-28 19:54:29 · 277 阅读 · 0 评论 -
*UVA10900_So you want to be a 2n-aire? _概率dp_连续概率
题意初始有1元,依次回答 n 道题,看到第 i 题时已知答对的概率,可选择1.答题:答错收入0,答对乘22.不答:拿钱离开每道题的概率为 t 到1的均匀分布。每次答题前知道概率做出最优决策,求得到的钱的期望。思路求期望为倒推的dp设 e[i] 为已答对 i 题时的最终能得到的钱的期望,e[i] 是分为两部分关于x的积分,x 为 t 到 1 间的均匀分布e[i] ...原创 2018-08-07 20:10:39 · 715 阅读 · 0 评论