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

随笔分类 -  OJ_POJ

摘要:题目链接: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]之 阅读全文
posted @ 2013-09-20 12:15 贾树丙 阅读(332) 评论(0) 推荐(0) 编辑
摘要:题目链接: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)则说明满足放牧要求。 动态规划:初始化: 阅读全文
posted @ 2013-09-04 01:21 贾树丙 阅读(286) 评论(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) 编辑
摘要:To and FroDescriptionMo and Larry have devised a way of encrypting messages. They first decide secretly on the number of columns and write the message (letters only) down the columns, padding with extra random letters so as to make a rectangular array of letters. For example, if the message is " 阅读全文
posted @ 2013-08-28 04:23 贾树丙 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=1564题目大意:给定一个整数t,和n个元素组成的集合。求能否用该集合中的元素和表示该整数,如果可以输出所有可行解。1 2 # include 3 # include 4 using namespace std; 5 bool cmp(int a,int b){ 6 return a>b; 7 } 8 int a[15],t,n; 9 bool flag;10 int ans[15],len;11 12 void dfs(int sum,int mark){13 int i;14 if(sum == 0){1... 阅读全文
posted @ 2013-08-27 21:50 贾树丙 阅读(229) 评论(0) 推荐(0) 编辑
摘要:All in All题目链接:http://poj.org/problem?id=1936题目大意:判断从字符串s2中能否找到子串s1。字符串长度为10W。Sample Inputsequence subsequenceperson compressionVERDI vivaVittorioEmanueleReDiItaliacaseDoesMatter CaseDoesMatterSample OutputYesNoYesNo分析:这明明是模拟题,有人竟然把它归为动态规划,是要用LCS做吗代码如下: 1 # include 2 # include 3 # define MAX 100005 阅读全文
posted @ 2013-08-26 02:33 贾树丙 阅读(274) 评论(0) 推荐(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://poj.org/problem?id=3181题目大意:用1,2...K元的硬币,凑成N元的方案数。Sample Input5 3Sample Output5分析:这不是母函数是什么,不管你信不信,反正我是信了。 之前有过一篇,讲母函数的动态规划做法http://www.cnblogs.com/acm-bingzi/archive/2013/04/30/3051725.html 这道题目,坑就坑在高精度上了,刚开始怎么也没想到,而且做法也很奇特。就是将2个long long 的数字进行拼接。代码如下: 1 # include 2 # include 3 # defi.. 阅读全文
posted @ 2013-08-24 22:00 贾树丙 阅读(252) 评论(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) 编辑
摘要:炮兵阵地Description司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。现在,将军们规划如何部署炮兵部队,在防止误 阅读全文
posted @ 2013-08-23 19:27 贾树丙 阅读(418) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=423Sample Input3(A-B + C) - (A+(B - C)) - (C-(D- E) )((A)-( (B)))A-(B+C)Sample OutputA-B+C-(A+B-C)-(C-(D-E))A-BA-(B+C)题目大意:给出加减代数表达式,仅由变量(大写字母表示),圆括号,加号 '+', 减号'-'组成,要求去掉多余的括号,但是不能改变表达式中的加号和减号,也就是说如果括号外面是减号,那就不能去掉分析: 对于每 阅读全文
posted @ 2013-08-22 18:52 贾树丙 阅读(481) 评论(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) 编辑
摘要:题目链接: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) 编辑
摘要:BabelfishTime Limit : 6000/3000ms (Java/Other)Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 53Accepted Submission(s) : 13Problem DescriptionYou have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have 阅读全文
posted @ 2013-04-28 16:44 贾树丙 阅读(392) 评论(0) 推荐(0) 编辑