DP
文章平均质量分 82
oilover
NOIP2010三等,NOIP2011三等,2013年杭州赛区打铁,2014年广州赛区打铁,这么多年过去了,我还是这么垃圾!!!!!!!
展开
-
HDU 5136 Yue Fei's Battle
题意:求直径上有K个点的不同构树个数(每个点度不超过3)。二叉树满足每个点度不超过3,把直径从中间切开,两边就是二叉树了。设dp[i] = 深度为i的不同构二叉树个数。 sum[i] = 深度不超过i的不同构二叉树个数。那么二叉树的两个分支有3种情况:一个分支深度为i-1, 另一个分支深度小于i-1,有dp[i-1] * sum[i-2]种方法;两个分支深度都是i-1,原创 2015-07-04 17:24:57 · 1844 阅读 · 1 评论 -
UVALive 6801 Sequence (DP)
dp[i][j] : 还有 i 个1,进行了 j 次翻转操作的方法数。ProblemSource : Regionals 2014 >> Asia - Kuala Lumpur#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define prt(k) cout<<#k" = "<<k<<原创 2015-03-04 21:12:31 · 1244 阅读 · 0 评论 -
HDU 5117 Fluorescent
期望X * 2^M=X1+X2+...+XNE[X^3] * 2^M = X^3 = sigma(Xi * Xj * Xk)当Xi, Xj, Xk都为1时,加上符合条件的方法数。我们可以压缩Xi, Xj, Xk的状态。DP[t][s] = 前 t 个按钮, 使得Xi, Xj, Xk状态为 s 的方法数。枚举i, j, k,然后就是简单DP了。ans = sigma(DP[M原创 2015-03-18 12:54:32 · 2584 阅读 · 0 评论 -
HDU 4745 Two Rabbits
Two RabbitsTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 941 Accepted Submission(s): 495Problem DescriptionLong long ago,原创 2014-11-18 19:17:18 · 982 阅读 · 0 评论 -
HDU 4089 Activation (概率DP )
参考1 参考2原创 2014-11-21 10:59:03 · 1076 阅读 · 1 评论 -
HDU 2844 Coins
多重背包。每个物品分别dp。。dp[i][j]表示考虑了前i个物品。。装满j的背包。。第i个物品最少拿多少个这样就可以了转移大概是。。。dp[i][j] = std::min(dp[i][j - a[i]] + 1, 0 if dp[i - 1][j] a[i]是第i个物品的大小c[i]是数量CoinsTime Limit: 2000/1原创 2015-05-15 19:30:24 · 1292 阅读 · 0 评论 -
Codeforces 486E. LIS of Sequence
首先,我们计算出以a[i]结束的前缀的LIS长度---f1[i] 以a[i]开始的后缀的LIS长度---f2[i]然后,如果f1[i] + f2[i] - 1 < LIS,显然a[i]不属于任何一个LIS。否则,如果有重复的(f1[i],f2[i]),那么a[i]不属于每一个LIS。否则,a[i]属于每一个LIS。原创 2014-11-13 20:29:39 · 1289 阅读 · 0 评论 -
HDU 5136 Yue Fei's Battle
传送门 题意:求直径上有K个点的不同构树个数(每个点度不超过3)。题意:求直径上有K个点的不同构树个数(每个点度不超过3)。 二叉树满足每个点度不超过3,把直径从中间切开,两边就是二叉树了。二叉树满足每个点度不超过3,把直径从中间切开,两边就是二叉树了。 设 dp[i]=深度为i的不同构二叉树个数。dp[i]= 深度为i的不同构二叉树个数。 sum[i]=深度不超过i的不同构二叉树原创 2015-09-11 15:31:40 · 771 阅读 · 0 评论 -
HDU 3507 Print Article
题目链接斜率DP的入门题。题意很清楚,就是输出序列a[n],把连续的单词放在同一行输出的费用是连续输出的单词费用和的平方加上常数M一行的费用为cost=(∑C[i])2+Mcost = (\sum{C[i]})^2 + M让我们求这个费用的最小值。设 SiS_i 为 CiC_i 的前缀和。设dp[i]表示输出前i个单词的最小费用,那么有如下的DP方程:dp[i]=min(dp[j]+(Si−Sj)2原创 2015-08-15 19:28:05 · 888 阅读 · 0 评论 -
HDU 4123 Bob’s Race (树形DP + 单调队列)
参考原创 2014-11-17 21:35:48 · 1034 阅读 · 0 评论 -
Codeforces 486D. Valid Sets
486D - Valid SetsFirstly, we solve the case d = + ∞. In this case, we can forget all ai since they doesn't play a role anymore. Consider the tree is rooted at node 1. Let Fi be the number原创 2014-11-13 09:48:44 · 1452 阅读 · 0 评论