欢迎访问我的个人网站==》 jiashubing.cn

随笔分类 -  算法_动态规划

摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555题目大意:从0开始到给定的数字N所有的数字中遇到“49”的数字的个数。Sample Input3150500Sample Output0115HintFrom 1 to 500, the numbers that include the sub-sequence "49" are "49","149","249","349","449","490",&qu 阅读全文
posted @ 2013-09-02 21:37 贾树丙 阅读(250) 评论(0) 推荐(0) 编辑
摘要:例题:最优配对问题 空间里有n个点P0,P1,...,Pn-1,你的任务是把他们配成n/2对(n是偶数),使得每个点恰好在一个点对中。所有点对中两点的距离之和应尽量小。n<=20,|xi|,|yi|,|zi|<=1000. 样例输入: 201 2 31 1 15 6 24 7 82 3 11 4 7 阅读全文
posted @ 2013-09-02 08:50 贾树丙 阅读(567) 评论(0) 推荐(1) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2809题目大意:给出战神吕布的初始攻击力ATI、防御力DEF、生命值HP、每升一级增加的攻击力In_ATI,增加的防御力In_DEF和增加的生命值In_HP。然后给出n个敌人的攻击力、防御力、生命值和杀死该单位能获得的经验值EXP。 吕布的初始经验值EXP是0,初始等级level是1,每当EXP>=level*100时就会升级。 在吕布LvBu和敌人A之间的战斗有3条规则 1.吕布攻击A,A失去Max(1,LvBu's ATI- A's DEF) HP; 2.A攻击吕布,吕布失 阅读全文
posted @ 2013-08-30 21:47 贾树丙 阅读(529) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=3311题目大意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小。Sample Input30 1 10 101 0 1 210 1 0 1010 2 10 00Sample Output8分析:dp[i][j]:表示在i状态(用二进制表示城市有没有经过)时最后到达j城市的最小时间,转移方程:dp[i][j]=min(dp[i][k]+d[k][j],dp[i][j]) d[k][j]是k城市到j城市的最短距离,显然要先用flody处理一下。代码如下: 1 # include 2 # 阅读全文
posted @ 2013-08-29 21:58 贾树丙 阅读(380) 评论(0) 推荐(0) 编辑
摘要:Mondriaan's DreamProblem DescriptionSquares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his 'toilet series' (where he had to use his toilet paper to draw on, for all of his paper was filled with squares and rectangles), he 阅读全文
posted @ 2013-08-29 19:07 贾树丙 阅读(628) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257题目大意:有 n(2 2 # include 3 const int N = (1<<10); 4 int A[11][11],dp[N]; 5 6 int main(){ 7 int n,i,j; 8 while(scanf("%d",&n) && n){ 9 for(i=0; i<n; i++)10 for(j=0; j<n; j++)11 scanf("%d",&am 阅读全文
posted @ 2013-08-28 17:56 贾树丙 阅读(270) 评论(0) 推荐(0) 编辑
摘要:Headmaster's Headachehe headmaster of Spring Field School is considering employing some new teachers for certain subjects. There are a number of teachers applying for the posts. Each teacher is able to teach one or more subjects. The headmaster wants to select applicants so that each subject is 阅读全文
posted @ 2013-08-28 03:58 贾树丙 阅读(634) 评论(1) 推荐(0) 编辑
摘要:滑雪DescriptionMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是... 阅读全文
posted @ 2013-08-26 02:11 贾树丙 阅读(345) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=3280题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价Sample Input3 4abcba 1000 1100b 350 700c 200 800Sample Output900分析:这是一道最长回文串的变形,就是LCS 一串字符要变成回文,对于一个字符来说,删掉它,或者增加对称的一个该字符,都能达到回文的效果,所以是等价的。所以取代价的的时候选择最小的就可以。 至于动态规划方程:令dp[i][j]表示从第 i 个字符到第j个字符变成回文的最小代价,初始为0。接着LCSdp[i].. 阅读全文
posted @ 2013-08-24 22:18 贾树丙 阅读(463) 评论(2) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114题目大意:根据储钱罐的重量,求出里面钱最少有多少。给定储钱罐的初始重量,装硬币后重量,和每个对应面值硬币的重量。Sample Input310 11021 130 5010 11021 150 301 6210 320 4Sample OutputThe minimum amount of money in the piggy-bank is 60.The minimum amount of money in the piggy-bank is 100.This is impossible.分 阅读全文
posted @ 2013-08-24 21:39 贾树丙 阅读(353) 评论(0) 推荐(0) 编辑
摘要:1. 为何状态压缩: 棋盘规模为n*m,且m≤10,如果用一个int表示一行上棋子的状态,足以表示m≤10所要求的范围。故想到用int s[num]。至于开多大的数组,可以自己用DFS搜索试试看;也可以遍历0~2^m-1,对每个数值的二进制表示进行检查;也可以用数学方法(?)2. 如何构造状态: 当然,在此之前首先要想到用DP(?)。之后,才考虑去构造状态函数f(...)。 这里有一个链式的限制:某行上的某个棋子的攻击范围是2。即,第r行的状态s[i],决定第r-1行只能取部分状态s[p];同时,第r行的状态s[i],第r-1行状态s[p],共同决定第r-2行只能取更少的状态s[q]。当然,最 阅读全文
posted @ 2013-08-24 03:55 贾树丙 阅读(271) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074题目大意:学生要完成各科作业, 给出各科老师给出交作业的期限和学生完成该科所需时间, 如果逾期一天则扣掉一单位学分, 要你求出完成所有作业而被扣最小的学分, 并将完成作业的顺序输出.Sample Input23Computer 3 3English 20 1Math 3 23Computer 3 3English 6 3Math 6 3Sample Output2ComputerMathEnglish3ComputerEnglishMath分析:(转)刚开始以为是背包, 但背包难以记录输出顺序 阅读全文
posted @ 2013-08-24 03:47 贾树丙 阅读(288) 评论(0) 推荐(0) 编辑
摘要:炮兵阵地Description司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。现在,将军们规划如何部署炮兵部队,在防止误 阅读全文
posted @ 2013-08-23 19:27 贾树丙 阅读(418) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681题目大意:给定三个字符串A,B,C 求最长的串D,要求(1)D是A的字序列 (2)D是B的子序列 (3)C是D的连续子序列Sample Input2aaaaaaaaaaaabcdefacebdfcfSample OutputCase #1: 4Case #2: 3HintFor test one, D is "aaaa", and for test two, D is "acf".分析:求A和B的LCS,正反各求一次得到dp1和dp2,然后枚举C在A,B 阅读全文
posted @ 2013-08-21 19:53 贾树丙 阅读(226) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5048Sample Input4 3 Sample Output3题目大意:n个格子排成一条直线,可以选择涂成红色或蓝色,问最少m个连续为红色的方案数。分析:递推法dp[i]表示前i个最少m个连续为红色的方案数。转移时,分类讨论:1、前i-1个已经满足这个性质,那么,第i个随意涂色,方案数为dp[i-1]*2。2、前i-1个不满足这个性质,那么,要想成为方案,区间[i-m+1,i]必须涂成红色。并且,下标为i-m这个点必须是蓝色,否则就与情况1重复了。而且正是由于这 阅读全文
posted @ 2013-08-21 18:07 贾树丙 阅读(304) 评论(0) 推荐(0) 编辑
摘要:Hackers’ CrackdownMiracle Corporations has a number of system services running in a distributed computer system which is a prime target for hackers. The system is basically a set ofNcomputer nodes with each of them running a set ofNservices. Note that, the set of services running on every node is sa 阅读全文
posted @ 2013-08-21 16:11 贾树丙 阅读(968) 评论(2) 推荐(0) 编辑
摘要:胜利大逃亡(续)Problem DescriptionIgnatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。Ignatius每分钟只能从一个坐标走到相邻四个坐标中的其中一个。魔王每t分钟回地牢视察一次,若发现Ignatius不在原位置便把他拎回去。经过若干次的尝试,Ignatius已画出整个地牢的地图。现在请你帮他计算能否再次成功逃亡。只要在魔王下次视察之前走到出口就算离 阅读全文
posted @ 2013-08-20 06:11 贾树丙 阅读(355) 评论(0) 推荐(0) 编辑
摘要:Bridging signalsDescription'Oh no, they've done it again', cries the chief designer at the Waferland chip factory. Once more the routing designers have screwed up completely, making the signals on the chip connecting the ports of two functional blocks cross each other all over the place. 阅读全文
posted @ 2013-08-17 22:13 贾树丙 阅读(561) 评论(0) 推荐(0) 编辑
摘要:利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。不过经常还是用在DP题目中,因为DP题目是一个自下而上的扩展过程,我们常常用到是连续的解,前面的解往往舍弃!所以用滚动数组可以说是很有必要的。 滚动数组 举个简单的例子: int i, d[100]; d[0] = 1; d[1] = 1; f 阅读全文
posted @ 2013-08-17 17:31 贾树丙 阅读(784) 评论(0) 推荐(3) 编辑
摘要:题目链接:http://poj.org/problem?id=1159题目大意:给定一串字符,添加最少的字符,使之成为回文串。Sample Input5Ab3bdSample Output2分析:这道题目之前有做过,就是将原字符串逆序得到另一个字符串,求它们的最长公共子序列,这样就能求得它的可以构成回文的最长字符数,用n减去即为添加最少可使之成为回文的数目。可恨的是之前一直超内存,看了别人的解题报告,原来定义dp[MAX][MAX]时,不用int型,而是short型,内存只占int的一半(见上一篇日志)另外逆序字符串可以不用新开一个数组,也可以直接在原数组上从后往前循环。代码如下: 1 # i 阅读全文
posted @ 2013-08-17 16:48 贾树丙 阅读(250) 评论(0) 推荐(0) 编辑