hdu3555(数位DP dfs/递推)】的更多相关文章

Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 10649    Accepted Submission(s): 3758 Problem Description The counter-terrorists found a time bomb in the dust. But this time the terrorists…
DP,递推,组合数 其实相当于就是一个递推推式子,然后要用到一点组合数的知识 一道很妙的题,因为不能互相攻击,所以任意行列不能有超过两个炮 首先令f[i][j][k]代表前i行,有j列为一个炮,有k列为两个炮的方案 那么有如下转移: 1,这行不放炮,add+=f[i-1][j][k]; 2,放一个炮,并且放在没有炮的那列 add+=f[i-1][j-1][k] * (m - j - k + 1);,因为放了这个炮后, 一个炮的变多了,也就是上一行的j+1得到这一行的j,所以上一行的j就是j-1,…
UVa 926 题意:给定N*N的街道图和起始点,有些街道不能走,问从起点到终点有多少种走法. 很基础的dp.递推,但是有两个地方需要注意,在标记当前点某个方向不能走时,也要同时标记对应方向上的对应点.另一点就是要开long long存.要是不考虑障碍的话,按组合数算从(1,1)走到(n,n)需要2*n步,东.北方向各走n步,结果就是C(n/2,n),这个结果会很大!!! #include<iostream> #include<cstdio> #include<cstring…
Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 13181    Accepted Submission(s): 4725 Problem Description The counter-terrorists found a time bomb in the dust. But this time the terrorist…
题意:= =中文题 思路一:比赛时队友想的...然后我赛后想了一下想了个2维dp,但是在转移的时候,貌似出了点小问题...吧?然后就按照队友的思路又写了一遍. 定义dp[i][j][k],表示第i列,放j个,剩下k个的种类数.其中j<=2, k<=2,j<=2的来源是只往上.下放.然后状态转移就是 dp[i][j][a[i] - j - k] = (dp[i][j][a[i] - j - k] + p[j] * dp[i - 1][k][j]) % mod; //看看会不会爆int!数组…
题目大意 有一个\(1001\times n\)的的网格,每个格子有\(q\)的概率是安全的,\(1-q\)的概率是危险的. 定义一个矩形是合法的当且仅当: 这个矩形中每个格子都是安全的 必须紧贴网格的下边界 问你最大的合法子矩形大小为\(k\)的概率是多少. \(n\leq {10}^9,k\leq 1000\) 吉老师:这题本来是\(k\leq 20000\) 题解 一道好题. 我们计算最大子矩形不超过\(i\)的答案\(s_i\),那么答案就是\(s_k-s_{k-1}\). 显然最后一行…
[NOI2017]泳池 实在没有思路啊~~~ luogu题解 1.差分,转化成至多k的概率减去至多k-1的概率.这样就不用记录“有没有出现k”这个信息了 2.n是1e9,感觉要递推然后利用数列的加速技巧 f[n]表示宽度为n的值,然后枚举最后一个连续高度至少为1的块,dp数组辅助 神仙dp:dp[i][j]表示宽度为i,j的高度出现限制,任意矩形不大于k的概率 设计确实巧妙:宽度利于转移给f,高度利于自己的转移 dp数组转移:枚举第一个到达j的限制的位置,这样,前面部分限制至少是j+1,后面至少…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位dp: dp[i][j]表示i位数,首位是j的符合要求的数字个数. j = 4时    dp[i][j] = 0 j != 4时   例如求dp[3][2],2xx的个数,2已经确定了,2后面xx的个数即为2xx的个数,只用求出0x, 1x, 2x...9x的个数之和即可.同时要注意限制条件,dp[i…
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1126 题解:一道基础的dp就是简单的递推可以设dp[height_left][height_right],但是这样显然回boom内存,所以不妨直接考虑两座塔之间的差于是便有了dp[i][j]表示考虑到第几个时两座塔差值是多少,然后就是递推了,要么加积木嫁到高的塔上要么就嫁到底的塔上要么都不嫁,这样递推方程就好写了.如果这样还是boom内存的话可以考虑用滚动优化i这一维. #i…
方法一: 朴素思路:果断建图,每次二分出一个区间然后要向这个区间每个点连有向边,然后一个环的话是可以互相引爆的,缩点之后就是一个DAG,求每个点出发有多少可达点. 然后注意两个问题: 上述建边显然$n^2$爆炸.因为是区间建边,所以用线段树建边优化,不过这题比较特殊,只是点向区间连边,分析线段树建边原理,可以完全把出树省掉,就用一个入树连边就行了.(其实边数还是很多,所以边上界我开了$2\times 10^7$...) 这样缩点后DAG上找连通点数,有一道类似的题,不过最多数据只能出到$2000…