HDU 3555 (递推&&记忆化)】的更多相关文章

#include<stdio.h> #include<string.h> #define max 25 typedef __int64 LL; LL dp[max][]; //dp[i][0] 不含49 //dp[i][1] 不含49但最高位为9 //dp[i][2] 含49 void init(){ memset(dp,,sizeof(dp)); dp[][]=; ;i<max;i++){ dp[i][]=dp[i-][]*-dp[i-][]; dp[i][]=dp[i-]…
我们发现 $c_{i}$ 和 $k$ 的规模非常小我们还发现每种颜色的位置是不必知道的,只要这种颜色和相邻的颜色种类不同即可.定义状态 $f[a][b][c][d][e][last]$,代表有 $a$ 个还可以放 1 个,$b$ 个可以放 2 个,$c$ 个可以放3个......上一个状态最后一个放的数是可以放 $last$ 个的种类. 考虑记忆化搜索:$f[a][b][c][d][e][last]+=f[a-1][b][c][d][e][1]*(a-(last==2))$考虑当前放可以放1个的…
HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中走法.当n为上方格子的时候,由于只能向右走,所以也有2种走法. 不妨用a[n]来表示第n个格子有几种走法,根据上述描述,不难找出递推关系,a[n] = a[n-1] + a[n-2].但是对于n<2的数字,就不适用了.也很简单,n<2的时候数一下即可,从1走到1,只有一种走法,从1走到2,有一种走…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个环可以取下或放上,cost=1.求最小cost.MOD 200907. 解题思路: 递推公式 题目意思非常无聊,感觉是YY的. 设$dp[i]$为取第i个环时的总cost. $dp[1]=1$,$dp[2]=2$,前两个环取下是没有条件要求的. 从i=3开始,由于条件对最后的环限制最大,所以从最后一…
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=2065 递推类题目, 可以考虑用数学方法来做, 但是明显也可以有递推思维来理解. 递推的话基本就是状态转移了, 如何找状态是递推的关键. 我们把这个分为四个状态 A 出现次数的奇偶和B出现状态的奇偶,我们可以构造出四个状态: A        B 第一个状态 :        偶       偶     0 第二个状态 :        偶       奇     1 第三个状态 :        …
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题目大意: 有n个同学, 站成一排, 要求 女生最少是两个站在一起, 问有多少种排列方式. 题目分析: 1.  假设第n个学生是个男生, 我们可以直接将他放在最后有 dp[n-1]种 即: ...............M   dp[n-1] 2.假设第n个放女生,要求两个女生在一起, 我们可以直接在最后放两个女生 即: .............FF    dp[n-2] 3.假设我们后面…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1428 漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU校园呈方形布局,可划分为n*n…
总结一下做递推题的经验,一般都开成long long (别看项数少,随便就超了) 一般从第 i 项开始推其与前面项的关系(动态规划也是这样),而不是从第i 项推其与后面的项的关系. hdu2044:http://acm.hdu.edu.cn/showproblem.php?pid=2044 //没开成long long WA了一次 #include<iostream> #include<cstdio> #include<algorithm> #include <s…
题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp[fl][fr][sl][sr][flag],表示第一堆牌上边取到fl,以下取到fr,相同sl.sr为第二堆牌,flag为第几个人在取.假设是第一个人,dp既要尽量大,假设是第二个人,那么肯定尽量小. #include <cstdio> #include <cstring> #incl…
最短路+记忆化搜索HDU 1142 A Walk Through the Forest链接:http://acm.hdu.edu.cn/showproblem.php?pid=1142 > 题意:找出不同的路径条数,假如jimmy要从A走到B的话满足jimmy从B到家的距离比从A到家的距离短> 这样我们可以通过最短路算法,找出从家(看成源点)到各个点的最短路径长度,记做D[v]. 然后就可以从起点(office) > dfs,首先从某点i到某点j走得通,然后满足D[j]<D[j],…