
递推
zhjcezh
这个作者很懒,什么都没留下…
展开
-
CF 429B B.Working out 四个角递推
题目大意: 一个人从左上走到右下,一个人从左下走到右上,两个人必须有一个点作为见面点,见面点的权值不能拿,问按照规则走,取得最大权值的和为多少。 思路: 首先要保证只有一个格子重合,那么只可能是以下两种情况: 1) A向右走,相遇后继续向右走,而B向上走,相遇后继续向上走 2) A向下走,相遇后继续向下走,而B向右走,相遇后继续向右走接着枚举相遇的格子(i,j)即可,考虑四个方向的dp原创 2017-08-21 13:00:57 · 611 阅读 · 0 评论 -
zoj 3747 Attack on Titans 带限制条件的计数递推dp
题意:给n个士兵排队,每个士兵三种G、R、P可选,求至少有m个连续G士兵,最多有k个连续R士兵的排列的种数。 一开始被至少m个搞晕了,知道递推也写不出递推式,后来发现可以转化,即至多连续n的情况减去至多连续m-1的情况; 然后就能开开心心找递推关系了;#include<bits/stdc++.h>using namespace std;#define maxn 1000001 #defin原创 2017-08-21 14:14:34 · 365 阅读 · 0 评论 -
hdu 4747 Mex 递推计数
想用线段树,但又想着是递推专题的,就忍者去想递推; 参考:http://www.2cto.com/kf/201309/245364.html 首先要明白,以i结束的所有区间的值的和记为f[i]肯定不超过以i+1结束的所有区间的值的和记为f[i+1]。所以可以根据f[i]间接推出f[i+1],记第i个数为sa[i],显然只用考虑大于等于sa[i]的数j对f[i]=f[i-1]+?的影响,。如果j出原创 2017-08-21 15:18:19 · 549 阅读 · 0 评论 -
hdu 4489 The King’s Ups and Downs
看到n<=20我就想暴力打表找出所有情况了;但死在第15组,要花的时间太久了; 然后就想着推嘛;每次加入一个当前情况最大的数;合理的位置就是高低高低高;所以要找前面高低的情况n,后面低高的情况m;那总情况就是n*m; 所以就是求n,m还有选择前面数的方法数C【i-1】【j】一共i个数,将i放在j位置上 组合数可以打表,n,m就递推来求; dp【i】【0】表示i个数高低的情况;dp【i】【1】原创 2017-08-21 16:22:34 · 413 阅读 · 0 评论 -
Two strings HDU - 6170 递推
和之前的一道cf很像,但明显难了很多; 麻瓜的我模仿之前那道一直在模拟,没想到还可以递推,亏我最近还在做什么递推练习TT; 题意:给出原串与匹配串,问能否匹配原串中所有的字符。’.’可以匹配所有字符,‘*’是给前一个字符附加一个buff,使其可以变成0~无穷个同样的字符; 思路:bool dp[i][j]代表str2前i个字符能否和str1前j个字符匹配(因为我们是用1去匹配2嘛,所以把2做i原创 2017-08-23 14:05:55 · 230 阅读 · 0 评论 -
Number String HDU - 4055 递推
题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果第i字符是‘I’表示排列中的第i-1个数是小于第i个数的。如果是‘D’,则反之。 思路:因为是递推题,我就直接想到了dp[i][j]代表第i位填了j的情况数;接下来就是分类讨论; 若str[i]!=’D’;即是递增的,所以第i-1位可以是1~j-1;dp[i][j]=dp[i-1][1]+~+dp[i-1][j-原创 2017-08-23 16:10:16 · 232 阅读 · 0 评论