随笔分类 - 算法_动态规划
摘要:Super Jumping! Jumping! Jumping!Problem DescriptionNowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now.The game can be played by two or more than two players. It consi
阅读全文
摘要:Common SubsequenceProblem DescriptionA subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a subsequence of X if there exists a strictly increasing sequence of indices of X such that for all j = 1,2,...,k,...
阅读全文
摘要:Monkey and BananaProblem DescriptionA group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, provide the monkey with some blocks. If the monkey is clever enough, it shall be able to reach the banana by pla
阅读全文
摘要:一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1563题目大意:在h*w的矩阵里铺满1*3的小矩阵,共有多少种方法Sample Input3 33 100 0Sample Output228分析:状态压缩DP,跟ZOJ 1100 及其相识,不过那道题目使用1*2的木板平铺,题解链接:http://www.cnblogs.com/acm-bingzi/p/3289994.html 但是不能照搬这道题目的方法,3^9约等于20000,两次循环的话会超时,所以每次只找符合条件的状态。 每个格子有三种状态0,1,2,..
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1625题目大意:将n个数重新排列,使得每个数的前一个数都不能和之前的一样,求一共有多少种排列方法ample Input:34Sample Output:311分析: CrazyAC's 解题报告: 本题一道DP题 仔细想想不难的 首先我们确定状态F[N]表示所产生的新排列的情况数 那么F[N]=f(F[N-1]) 怎么来确定他呢? 由于F[N-1]是排好了;所以只要把N往里插,唯一不可插的地方就是N-1后;所以共有N-1情况, 那么F[N]=(N-1)*..
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2624题目大意:popo要将给定数量的灯变成自己想要的颜色,有一种魔法开关,可以将一连串的灯同时变成同一个颜色。给定灯的数量和popo想要实现的状态,求最小步数Sample Input5RGBGR4RGRG7ABACADA0Sample Output334分析:令f[x][y]表示从第 x 个灯到第 y 个灯变成目标状态的最小花费,则初始时为最大值。而f[x][x]=1。 则f[x][y] =min{ f[x][k-1]+f[k][y] | x 2 # inc.
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993题目大意:给定一个长度为n(最长为10^5)的正整数序列,求出连续的最短为k的子序列平均值的最大值。Sample Input10 6 6 4 2 10 3 8 5 9 4 1Sample Output6.50分析:斜率优化DP,要认真看代码如下: 1 # include 2 # include 3 # include 4 # include 5 6 using namespace std; 7 8 const int maxn = 100010; 9 double a[maxn], sum..
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3374题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上每天回结出金子。已经有n棵树,JAVAMAN要停留m天,每天只能砍掉一棵树,砍掉树后就能得到树上的黄金。给定n棵树上原有的黄金a[i]和每天可以新增加的黄金b[i],求他最多可以得到多少黄金。中途如果有1天不砍树的话,之后的日子久不能砍树,所有最好每天都砍树,或者直到树被砍完。Sample Input22 110 101 12 28 102 3Sample Output1021Hints:Test
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1702题目大意:给定有很多数字组成的诗,譬如“AABB”, “ABAB”, “ABBA” and “AAAA”形式的诗句是押韵的。从中挑选,求最多可以构成多少押韵句,并且输出这些句子在原序列中的位置。Sample Input151 2 3 1 2 1 2 3 3 2 1 1 3 2 231 2 3Sample Output31 2 4 57 8 9 1011 12 14 150分析:设dp[i]表示从 1 到 i 之间押韵句的最大数目,f(i,j)表示当[i,j]之
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1300题目大意:珠宝店有100种不同质量的珍珠,质量越高价钱越高,为了促进销售,每买一种类型的珍珠,要在原来的基础上必须再买10个。这时一个CFO发现,这种条件下,有时买质量更好的反而更便宜。比如要买10元的珍珠5个,20元的珍珠100个,普通的买法需要(5+10)*10 + (100+10)*20 = 2350,但是如果只买105个价值20元的珍珠,只需要(5+100+10)*20 = 2300。现在给定要买的珍珠的数量和对应价格,求最少花费Sample Input22100 1100 231 1
阅读全文
摘要:免费馅饼Problem Description都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3681前些天花时间看到的题目,但写出不来,弱弱的放弃了。没想到现在学弟居然写出这种代码来,大吃一惊附加敬仰之情。这里借用下他的成果,好好学习吧,骚年***Sample Input5 5GDDSSSSSFSSYGYSSGSYSSSYSS0 0Sample Output4题意:给出矩阵(作为监狱)和在监狱中的一个装有电池的机器人,其中F为出发点,图中只有一个,且初始状态下机器人在此处电池为满电量;D为障碍物,不可走;S为空格子,机器可自由通过;G为充电点,只能充电一次,且一次能充满电池,经过G可作为S不
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1711题目大意:给定一个正整数n,产生一个3*n位长的串,要求这个串中(1)A、B、C的数目都是n;(2)这个串的任意一个前缀,也就是从开始往后任意一段连续序列中字符的个数A>=B>=C。求满足条件的数目。Sample Input23Sample Output542分析:令dp[i][j][k] 表示从第一个字符开始,长度为i+j+k的串,A的个数为 i ,B的个数为 j ,C的个数为 k 的字符串的个数。 则如果i>=j>=k 则可以根据最
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1745题目大意:一个串由N个字符组成,每个字符是‘0’或者是‘1’,在任意一段连续的子序列中,要求0和1的个数的差不超过K,求一共有多少种这样的串,比如N=4,K=3时,除了0000和1111外的其他四个字符的串都符合要求。Sample Input1 24 3Sample Output214分析:这种涉及到任意子区间的性质的问题,如果每个子区间都考虑是很难处理的。注意到0和1的个数之差是满足区间加减法的,也就是说如果我们知道所有后缀的0和1的个数之差那么任意子串的0
阅读全文
摘要:Unidirectional TSPProblem DescriptionProblems that require minimum paths through some domain appear in many different areas of computer science. For example, one of the constraints in VLSI routing problems is minimizing wire length. The Traveling Salesperson Problem (TSP) -- finding whether all the
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4249题目大意:给一个a+b=c的表达式,但是a、b、c中部分位的数字丢失,并用?代替,问有多少种方案使得这个表达式成立。Sample Input7+1?=1??1+?1=22Sample OutputCase 1: 3Case 2: 1Hint There are three solutions for the first case: 7+10=17, 7+11=18, 7+12=19 There is only one solution for the second case: 11+11=22
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3920题目大意:你在一个位置用激光枪灭敌人,给你初始位置,下面是2*n个敌人的位置,你一枪能杀两个,可以杀死任意两个人,激光束的路径是消耗的能量,求最小能量,保证一次只消灭两个敌人,你的位置不变Sample Input20 0 1 6 0 3 00 0 2 1 0 2 1 -1 0 -2 0Sample OutputCase #1: 6.00 Case #2: 4.41分析:给每个点编个号,用状态压缩表示射击那些点,射击过的表示为1,dp[i]表示射击状态 i 时最少消耗,答案即为dp[(1 2 #
阅读全文
摘要:题目链接:http://poj.org/problem?id=3254题目大意:Farmer John 放牧cow,有些草地上的草是不能吃的,用0表示,然后规定两头牛不能相邻放牧。问你有多少种放牧方法。Sample Input2 31 1 10 1 0Sample Output9分析:对于这种二维地图型,一般设状态dp[i][j]表示第 i 行第 j 状态达到要求的总数 输入地图,用map[i]表示第 i 行中的状态。为了是sta[k]表示可行状态更加方便,map[i]中用0表示可放牧,1表示不可放牧,这样如果(sta[k]&map[i]==0)则说明满足放牧要求。 动态规划:初始化:
阅读全文
摘要:不要62Problem Description杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有4或62的号码。例如:62315 73418 88914都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。Input输入的都是整数对n、m(0 2 # include 3 int
阅读全文