上一页 1 ··· 9 10 11 12 13 14 下一页
2013年3月23日

poj1671

摘要: 题意:一首n行诗,每一行有一种韵律,问这首诗总共可能有多少种韵律排列。思路:dp or 递推 f[i][j]表示前i个位置,用j种韵律的方案数 f[i][j] = f[i-1][j]*j + f[i-1][j-1] {其实挺好理解的,如果没出现新的韵律,那么就用前面的j种任意一种韵律来填充,否则就新引入一种韵律} 1 /* 2 State:Accpeted 3 Time:2013-03-07 22:02:23 4 */ 5 #include <iostream> 6 #include <cstring> 7 #include <string> 8 #incl 阅读全文
posted @ 2013-03-23 21:41 yzcstc 阅读(203) 评论(0) 推荐(0) 编辑

poj1636

摘要: 题目大意:给出两侧分别有m个节点的图,边不可能存在于同一侧的点之间.从左和右侧分别挑出数量相等且不大于m/2个一些点,进行交换,使换完后不存在同一侧的边。求最大交换点的数。。思路:进行联通二分图染色。。颜色相同的点必须同时交换。。不然就有边处于同一测。。 然后dp f[i][j]表示一个交换i个,一个个交换j个是否可行 f[i][j] =f[i - vx[k]][j - vy[k]]|| f[i-vy[k]][j - vx[k]]; vx[k],vy[k]表示联通块的相同颜色的个数 1 /* 2 Time:2013-03-07 00:50:09 3 State:Accep... 阅读全文
posted @ 2013-03-23 21:15 yzcstc 阅读(358) 评论(0) 推荐(0) 编辑

poj1635

摘要: 题目大意:给出两串含有‘1’和‘0’的字符串,0表示向下搜索,1表示回溯,这样深搜一颗树深搜完之后问这两棵树是不是同一棵树。。思路:本题为最小树表示法。。类似dp的思想实现。。 当1和0的个数相等时,这个序列便是一颗子树。。 每次搜到一个子树,我们便对子树进行大小排序。。 每层都这样操作。。 那么最后的序列便是树的最小表示法。。因为其是唯一的。。 两串如果相等便是同一颗数。。 1 /* 2 Time:2013.03.06 00:19:55 3 State:Accepted 4 */ 5 #include <iostream> 6 #include <cstring> . 阅读全文
posted @ 2013-03-23 21:01 yzcstc 阅读(265) 评论(0) 推荐(0) 编辑

poj1276

摘要: 题意:给你一堆钱,有许多面值,每种若干张,请找出利用这些钱可以凑成的最接近且小于给定的数字的数额。。思路:多重背包。。。 1 /* 2 State:Accepted 3 Time:2013.3.3 4 */ 5 #include <iostream> 6 #include <cstring> 7 #include <string> 8 #include <cstdlib> 9 #include <cstdio>10 #include <cmath>11 #include <algorithm>12 #inclu 阅读全文
posted @ 2013-03-23 20:50 yzcstc 阅读(167) 评论(0) 推荐(0) 编辑

poj2411

摘要: 题意:题意:给定一个长宽小于等于11的矩形,问用1×2的小矩形填满,有多少种方法。思路:经典的状态压缩题目 用2进制表示状态 f[i][opt]表是第i行状态为opt时的方法数 f[i][opt] = sigma(f[i-1][opt1])期中opt1如果当前位上没放,那么opt就必须放一个竖的。。。 答案为sigma(f[n][i]) 1 /* 2 STATE:ACCEPTED 3 TIME:2013.3.3 4 */ 5 #include <iostream> 6 #include <cstring> 7 #include <string> 8 阅读全文
posted @ 2013-03-23 20:45 yzcstc 阅读(304) 评论(0) 推荐(0) 编辑

poj1260

摘要: 思路:dp f[i][j]表示前i个总共买了j个总共要付的最小费用。。。 f[i][j] = min(f[i -1][k] + (j-k+10)*value[i]); k<=sum[i-1] 1 /* 2 State:Accepted 3 Time:2013.3.2 4 */ 5 6 #include <iostream> 7 #include <cstring> 8 #include <string> 9 #include <fstream>10 #include <cstdlib>11 #include <cstdio 阅读全文
posted @ 2013-03-23 20:35 yzcstc 阅读(137) 评论(0) 推荐(0) 编辑

poj1221

摘要: 思路:递推or dpf[i][j]表示要分解i且最小数字为j的情况f[i][j] += f[i-2*j][j] (i-2*j>=j),f[i][j] += 1 (i==2*j)初始 f[i][i]=1 1 /* 2 State:Accepted 3 Time:2013.3.2 4 */ 5 #include <iostream> 6 #include <cstring> 7 #include <string> 8 #include <cstdlib> 9 #include <fstream>10 #include <cma 阅读全文
posted @ 2013-03-23 20:23 yzcstc 阅读(143) 评论(0) 推荐(0) 编辑

poj1080

摘要: 题意:给定2个基因串(ACGT),可以往里面添加’-‘(可表示任意字母),使2串长度相同,两串添加完的最大相似度。。思路:dp f[i][j]表示第一串前i个,第二串前j个添加完的最大相似du f[i][j] = max(f[i -1][j-1] + mat(s1[i] , s2[j]), f[i-1][j] +mat('-', s2[j]), f[i][j-1] + mat(s1[i],'-')); mat(char1, char2) 表示两字符的相似度。。 1 /* 2 State:Accepted 3 Time:2013.3.1 4 */ 5 #inclu 阅读全文
posted @ 2013-03-23 20:14 yzcstc 阅读(209) 评论(0) 推荐(0) 编辑

poj1050

摘要: 经典的最大子矩阵和。。转化成最大子段和(通过枚举列的长度,然后对于选定的那一列做一次的最长子段和)最后选取最大就是答案。。 1 /* 2 State:Accepted 3 Time:2013.3.1 4 */ 5 6 #include <iostream> 7 #include <cstdlib> 8 #include <cstdio> 9 #include <cstring>10 #include <algorithm>11 #include <fstream>12 #include <string>13 # 阅读全文
posted @ 2013-03-23 19:58 yzcstc 阅读(243) 评论(0) 推荐(0) 编辑

poj1141

摘要: 题意:定义如下规则序列(字符串): 空序列是规则序列; 如果S是规则序列,那么(S)和[S]也是规则序列; 如果A和B都是规则序列,那么AB也是规则序列。 例如,下面的字符串都是规则序列: (), [], (()), ([]), ()[], ()[()] 这几个则不是规则序列: (, [, ], )(, ([() 现在,给出一些由‘(’,‘)’,‘[’,‘]’构成的序列,请添加尽量少的括号,得到一个规则序列。思路: 黑书上的题目。经典dp f[i][j]表示i..j这一段匹配完所需要添加的最少字母数 方程:f[i][j] = min(f[i... 阅读全文
posted @ 2013-03-23 19:53 yzcstc 阅读(210) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 下一页