
dp
文章平均质量分 69
matrix5247
这个作者很懒,什么都没留下…
展开
-
codeforces714e Sonya and Problem Wihtout a Legend
题意:一串数字,要求变成严格的上升子序列的最小花费,花费为abs(a-temp)题解:做这题之前,可以先去做做hdu5256 考虑两个位置i,j(i= j - i ,也就是说a[j] - j >= a[i] - i 那么考虑新的数列a[i] - i,只要保证这个数列是上升的就可以(可以存在相等) 首先把a[i]都变原创 2016-09-14 14:12:12 · 885 阅读 · 0 评论 -
hdu5900 QSC and Master
题意:n题解:很明显,区间dp 感觉像是括号配对一样,要不是()()这样,要不就是(())这样 但需要注意的是,类似于(())这样时,里面的()必须是完全去掉int T,n,a[310],b[310],c[310][310];///c用于记录里面是否是完全使用LL dp[310][310];void donggui(){原创 2016-09-18 21:33:52 · 429 阅读 · 0 评论 -
Codeforces 678E Another Sith Tournament(状压dp,概率dp)
题意:n个人的擂台赛,起初主角选一个人作为擂主,然后主角选择人上去打擂,直到剩最后一个人,并且主角是擂主,问最后主角是擂主的概率最大是多少题解:dp[i][j]表示i状态下,j是擂主,最后主角胜出的概率 dp[i][j] = max(dp[i - (1 ans = max(dp[((1 刚开始一直没想通为何要倒着dp原创 2016-09-07 11:24:26 · 440 阅读 · 0 评论 -
hdu5898 odd-even number
题意:问(l,r)内,连续的奇数有偶数位,连续的偶数有奇数位,有多少这样的数字题解:数位dp,注意前导0就可以LL dp[20][20][2][2];int wei[20];///weishu表示处理到了第几位,pre代表前一位是奇数还是偶数,len表示前面奇数或偶数连续的长度,zero表示是否有前导0LL dfs(int weishu, int pre, int len, i原创 2016-09-20 14:15:45 · 299 阅读 · 0 评论 -
概率dp
来写一个概率dp专题light oj 1027 有n个门让你选,每个门有一个数字,正数代表x分钟后出去,负数代表x分钟后回到起点重新开始然后问你出去的时间期望是多少分钟如果是一个正数,那么x分钟后就可以出去,如果是一个负数,那么等x分钟后,继续回到起点,那么答案就是ans = (正数的个数 / 总个数) * (正数的和 / 正数的个数) + (负数的个数 / 总原创 2016-09-06 19:23:30 · 241 阅读 · 0 评论 -
hdu5489 Removed Interval
题意:长度为n(题解:对于某一位,可以假设出现在最终的序列中,那么可以算出以这个数为头后面的LIS(可以从后往前处理),然后还可以算出以这个数结尾(类似于O(nlogn)计算LIS),去掉前L个的LIS,两者相加-1就可以算出最终的LIS 需要注意的是,如果L出现在最后位置时的情况int a[100010];///存从后往前处理时的LISint b[100010原创 2016-09-21 13:54:00 · 354 阅读 · 0 评论 -
51nod 1503 && codeforces570e Pig and Palindromes
题意:n*m的格子,每个格子上有一个字符,从(1,1)走到(n,m)只能向下和向右,问走过的字符串是回文的个数有多少题解:比较容易想到是dp,dp[step][x1][y1][x2][y2],表示第step步到(x1,y1)和(x2,y2)共有多少种方案 但这样的话,时间空间都爆炸 可以用滚动数组优化掉一维,但空间还是会爆炸原创 2016-10-12 17:11:08 · 340 阅读 · 0 评论