
DP
shiyuankongbu
这个作者很懒,什么都没留下…
展开
-
hdu 2089 && hdu 3555
题目:hdu 2089题意:求不包含4或62的个数tag:数位dp对于组成各种数字的状态,我们分为以下几种:S0:不存在4 且 不存在连续的 62S1:不存在4 且 不存在连续的 62 且 第一位不2S2:存在 4 或者 62对于每个状态,得到的下一个状态,假定为将(0~9)的数字插在前面,那么:S1状态可由S0状态前面直接加2得到;S2状态由S1状态前面加6或者由S0原创 2013-08-23 20:49:31 · 1199 阅读 · 1 评论 -
hdu 4576 Robot
题目:hdu 4576 Robot思路:暴力递推+滚动数组(小建建说的)#include #include #include #include #include using namespace std;double dp[2][210];int n,m,l,r,w;int main(){ while(scanf("%d%d%d%d",&n,&m,&l,&r原创 2013-08-11 21:18:03 · 1012 阅读 · 0 评论 -
状态dp若干入门题
1. hdu 1565 方格取数(1)#include #include #include #include #include using namespace std;int legal[1<<20];int num,a[21][21];int dp[21][1<<20];int n;void init(){ num=0; for(int i=0;i<(1原创 2013-08-05 15:59:42 · 1117 阅读 · 0 评论 -
hdu 4649 Professor Tian
题目:Professor Tian题意:给你n+1个数字和n个操作(&,^,|),对于每个操作和操作后面的数字,可能出现消失的概率,求最后的期望。思路:虽然标程说是反状态dp,可是好像之前貌似没有听说过这个东西,不过因为各种操作是不存在进位的现象的,所以我们可以单独考虑对于每一位消失或不消失进行讨论(尼玛,这就是反状态?dp?)所以dp方程就是 dp[i][j] 表示前 i 位出现原创 2013-08-09 09:53:30 · 933 阅读 · 1 评论 -
hdu 3001 Travelling (3进制状态dp)
题目:hdu 3001 Travelling 状态方程:dp[state][i] = min(dp[state][i] , dp[state-j][j]+cnt[j][i]) 类似 floyd // dp[state][i] 表示状态state下,终点为i,遍历所有城市的最短路径但是由于每个城市最多只能经过两次,所以我们用3进制来表示该城市被经过的次数。注意:注意重边的存在。原创 2013-08-07 16:30:30 · 951 阅读 · 0 评论 -
CF 5 C. Longest Regular Bracket Sequence
题目:Longest Regular Bracket Sequence思路:简单dp#include #include #include #include #include #include using namespace std;#define maxn 1000010int dp[maxn];stackst;int main(){ while(!s原创 2013-07-14 03:44:23 · 1458 阅读 · 0 评论 -
CF 2 B. The least round way
题目:The least round way思路:两次dp分别求2,5出现的幂的一条路径,如果这条路径上有0,那么最后的结果肯定是1(1个0),不然就是2和5的情况的最小的那种情况。#include #include #include #include #include #define maxn 1010#define inf 0xfffffffusing names原创 2013-07-13 00:53:18 · 1696 阅读 · 0 评论 -
CF 4 D. Mysterious Present
题目:Mysterious Present思路:类似于最长上升子序列,开始的时候自作聪明,以为是长和宽可以旋转的,= = #include #include #include #include #include #include using namespace std;#define maxn 5010#define inf 0xfffffffstruct nod原创 2013-07-13 13:17:22 · 934 阅读 · 0 评论 -
poj 3744 Scout YYF I
题目:poj 3744 Scout YYF Itag:概率dp思路:对于当前的位置i,p的概率来自i-1,(1-p)的概率来自 i-2 的位置,但是有雷的位置,概率为0设dp[i]表示走到i位置的概率,dp[0]=0,dp[1]=1,dp[i]=p*dp[i-1]+(1-p)*dp[i-2] 有雷的地方 dp[i]=0由于范围比较大,但是雷的个数只有10个,所以讨论到达每一个雷的原创 2013-08-14 12:15:38 · 1060 阅读 · 0 评论 -
poj 2096 Collecting Bugs
题目:poj 2096 Collecting Bugstag:概率dp思路:关于期望的问题除了上次多校之外好像没接触过期望类的问题,最近看了刘汝佳的厚白书上几个题,对马尔可夫过程完全不理解,同时也不明白所谓的”期望的线性和全期望公式“是啥。。。不过看了上次某篇博客里说”一般情况概率是正着推,期望是倒着推”(尼玛,老子怎么揣测就不对,我怎么知道for循环式正着过去,还是逆着过来)原创 2013-08-14 23:53:09 · 1012 阅读 · 0 评论 -
uva 11825 - Hackers' Crackdown
题目:uva 11825 - Hackers' Crackdown思路:状态压缩#include #include #include #include #include #include using namespace std;#define maxn ((1<<16)+1)int p[20];int covers[maxn];int dp[maxn];i原创 2013-09-20 12:46:51 · 1321 阅读 · 0 评论 -
uva 10891 - Game of Sum
题目:uva 10891 - Game of Sum题意:一排石子,每次可以从左边或者右边拿若干个,求先后手差值的最大值思路:dp#include #include #include #include #include using namespace std;#define maxn 110bool vis[maxn][maxn];int dp[maxn][maxn原创 2013-09-20 12:50:00 · 889 阅读 · 0 评论 -
poj 3071 Football
题目:poj 3071 Footballtag:概率dp思路:Round1 : 0 play with 1 2 play with 3 4 play with 5 ...Round 2: 0 can原创 2013-08-16 11:22:46 · 808 阅读 · 0 评论 -
hdu 4599 Dice
题目:hdu 4599 Dice tag :概率dp思路:跟上次多校一样的思路:click here所以知道:F(n)=(6^n-1)/5 H(n)=6*F(n) G(n)=6*m所以要求的是:m>=(6^n-1)/30 所以最小的m是 (6^n+24)/30 m%mod = (6^n+24)/30 %mod 分子部分用费马小定理,分子部分用逆元原创 2013-08-27 15:40:45 · 1561 阅读 · 0 评论 -
hdu 4628 Pieces
题目:hdu 4628 Pieces思路:状态dp当前dp[state]表示state状态下要删回文串的次数,dp[state]=min(dp[state-substate]+1,dp[state])#include #include #include #include #include using namespace std;bool legal[(1<<16)+1];原创 2013-08-27 15:29:57 · 1239 阅读 · 0 评论 -
CF 159D Palindrome pairs
题目:CF 159D Palindrome pairstag:dp思路:枚举对称轴,用dpr[i]记录从0到位置i间回文串的个数,dpl[i]表示位置i到最后的回文串的个数。需要求解的是形如回文串加回文串的种数,对于位置i,我们先累计前i个出现的回文串的个数乘上从i开始后面的回文串的个数,就是答案#include #include #include #include原创 2013-08-16 16:06:29 · 2351 阅读 · 0 评论 -
hdu 4681 String
题目:hdu 4681 String思路:预处理求正向逆向的最长公共子序列,枚举C串在A,B中出现的两头位置的最长公共子序列+C的长度#include #include #include #include #include #include #include using namespace std;vector >va,vb;#define maxn 1010i原创 2013-08-15 23:39:04 · 1080 阅读 · 0 评论 -
hdu 4652 Dice
题目:hdu 4652 Dice多校那天水过了,今天回过头来看下这个题的过程:#include #include #include #include #include using namespace std;double solve0(int m,int n){ double ans=0; for(int i=0;i<=n-1;i++)原创 2013-08-15 10:38:50 · 1631 阅读 · 0 评论 -
状态DP入门
状态压缩: 论文:天津大学的周伟的《状态压缩》 有个ppt也蛮好:华科的 ppt 在某个论坛也看到状态dp入门的几个题和帖子,膜拜学习中 :here转载 2013-05-20 16:19:35 · 796 阅读 · 0 评论 -
dp46道~学习
本来打算寒假的最后几天争取看能不能把dp46道给搞定的,结果发现过年的时候不想刷题,过完年之后大家又忙着去学校吃离别的饭了,于是嘛,计划又只是一个幌子题目:来自 hdu 分类(我是看这儿的):动态规划(46道题目)目测开学之前是刷不完了,如果只是为了完成计划盲目的去做题,还不如不做,因为感觉那样的话,解决一个问题的本质就早已变了,如果是为了变强的话,在思维上进步就行了,做了多少多少题只原创 2013-02-22 15:39:27 · 3126 阅读 · 2 评论 -
hdu 2639 (0-1背包第k优解)Bone Collector II
Bone Collector IITime Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 821 Accepted Submission(s): 390Problem DescriptionThe title of t原创 2012-08-13 01:32:54 · 1886 阅读 · 0 评论 -
poj 1014 Dividing
DividingTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 46529 Accepted: 11617DescriptionMarsha and Bill own a collection of marbles. They want to split原创 2012-08-17 16:45:55 · 698 阅读 · 0 评论 -
uva 10635 - Prince and Princess
题目:uva 10635 - Prince and Princess题意:求最长公共子序列(每个元素唯一)思路:LCS做会超时,转换成LIS给出两个序列A,B,对于A的序列给出编号,在B中将对应的转换成编号,不存在的标记为0,然后求编号的最长上升子序列,O(nlgn)#include #include #include #include #include #i原创 2013-09-20 12:55:03 · 1096 阅读 · 0 评论