上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页

2013年8月2日

HDU 2108 逆时针给出多边形的顶点,判断是否为凸多边形,水题

摘要: 下面是别人解题报告的链接,很详细,写的很好http://blog.csdn.net/chl_3205/article/details/8520597下面贴我的代码 1 #include 2 struct point 3 { 4 int x,y; 5 } p[100005]; 6 bool checkDir(point p0,point p1,point p2) 7 { 8 if((p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y) * (p2.x-p0.x) > 0) 9 return true;10 else return fals... 阅读全文

posted @ 2013-08-02 19:04 allh123 阅读(353) 评论(0) 推荐(0) 编辑

POJ 3311 Hie with the Pie 先用floyd预处理,再状态压缩

摘要: 下面是别人的解题报告链接:http://blog.csdn.net/accry/article/details/6607703下面是我的代码,我觉得链接中的代码有一点小问题,也许是我想错了吧。 1 #include 2 #define min(a,b) (a) < (b) ? (a) : (b); 3 #define INF 100000000 4 int dist[13][13]; 5 int dp[2050][13]; 6 void init(int n) 7 { 8 for(int i=0; i<=n; ++i) 9 for(int j=0; j<=n; ++j... 阅读全文

posted @ 2013-08-02 15:06 allh123 阅读(192) 评论(0) 推荐(0) 编辑

2013年8月1日

POJ 1185 炮兵阵地

摘要: 主要还是下面的解题报告写的。http://blog.csdn.net/accry/article/details/6607703贴代码,代码中有一些注释 1 #include 2 #include 3 int map[105]; 4 int st[70]; 5 int n,m; 6 int dp[105][70][70]; 7 int one[70]; 8 9 //数x化为二进制时1的个数 10 int countOne(int x) 11 { 12 int cnt =0; 13 while(x) 14 { 15 ++cnt; 1... 阅读全文

posted @ 2013-08-01 21:47 allh123 阅读(234) 评论(0) 推荐(0) 编辑

HDU 3068 最长回文 manacher 算法,基本上是O(n)复杂度

摘要: 下面有别人的比较详细的解题报告:http://wenku.baidu.com/view/3031d2d3360cba1aa811da42.html下面贴我的代码,注释在代码中: 1 #include 2 #include 3 #define N 110005 4 char a[N]; 5 char s[N i)34 p[i] = min(max-i,p[2*d-i]); //一条线段,以位置d为中心,左边是j35 //右边是i,这样有i+j = 2*d , j = 2*d-i;这里是核心,避免了重复计算,类似记忆化搜索36 ... 阅读全文

posted @ 2013-08-01 16:02 allh123 阅读(190) 评论(0) 推荐(0) 编辑

2013年7月31日

POJ 3254 Corn Fields状态压缩DP

摘要: 下面有别人的题解报告,并且不止这一个状态压缩题的哦····http://blog.csdn.net/accry/article/details/6607703下面是我的代码,代码很挫,绝对有很大的优化的空间···· 1 #include 2 #include 3 int dp[2][(1 2 #include 3 int dp[2][400]; 4 int st[400]; 5 //检查一行的奶牛放置情形是否合理 6 //即是否有相邻的两个1,没有返回true 7 bool checkHori(int state) 阅读全文

posted @ 2013-07-31 21:29 allh123 阅读(186) 评论(0) 推荐(0) 编辑

2013年7月30日

POJ 2441 Arrange the Bulls 状态压缩递推简单题 (状态压缩DP)

摘要: 推荐网址,下面是别人的解题报告:http://www.cnblogs.com/chasetheexcellence/archive/2012/04/16/poj2441.html里面有状态压缩论文的链接,可以看看。该解题报告中用的是二维数组,但是很显然的是,递推式中的下一行只与上一行有关,类似于最长公共子序列,可以用滚动数组,在滚动数组后发现只用一个数组就可以了。至于是不是要和0-1背包一样得按从大到小的顺序,我没有,我的状态是从小到大的顺序,但是也AC了。如果不用滚动数组,会超内存。自己动手退一下,就能从滚动数组推到只用一个数组的情形。然后我就直接贴我的代码,注释就在代码中 1 #inclu 阅读全文

posted @ 2013-07-30 21:41 allh123 阅读(415) 评论(0) 推荐(0) 编辑

POJ 3253 Fence Repair STL 优先队列

摘要: 这题做完后觉得很水,主要的想法就是逆过程思考,原题是截断,可以想成是拼装,一共有n根木棍,最后要拼成一根完整的,每两根小的拼成一根大的,拼成后的木棍长度就是费用,要求费用最少。显然的是一共会拼接n-1次,如果把每根木棍最初的长度想成叶子节点,两个节点的父节点就是这两个节点的长度相加。那么求的就是这n-1个父节点的总和最少。为实现这个目标,我们使每个父节点的值尽可能的少,由此想到哈夫曼编码的原理。初始条件为一共n根木棍。然后从中选出最短的两根,将这两根拼接成一根,这样得到的父节点的值是最小的。然后将这根木棍放进原来的木棍中,重复该步骤(从木棍堆中选出最短的两根,拼接成一根,放回木棍堆中),进行了 阅读全文

posted @ 2013-07-30 19:05 allh123 阅读(231) 评论(0) 推荐(0) 编辑

2013年5月21日

中南 1294 coins 重点是想法,外加STL中的map

摘要: 题目网址:http://122.207.68.93/OnlineJudge/problem.php?id=1294题意是给你一个字符串,字符串中只包含O和R,要你求满足条件的最长的连续子序列的长度,输出该长度。。条件是,连续子序列中O的个数是R的个数的K倍(K已知)想法如下:设这个满足条件的子序列O的个数为x,R的个数为y则有x = k*y即有x + (-k)*y = 0那么如果令R的权值为-k,O的权值为1,这段序列的和即为0令sum[i]为前i项之和。。。如果有sum[i] == sum[j],证明a(i+1) + a(i+2) + ```` + a(j)的和为0,也就是说出现可行解,其长 阅读全文

posted @ 2013-05-21 20:27 allh123 阅读(146) 评论(0) 推荐(0) 编辑

2013年5月13日

POJ 1159 Palindrome 回文 DP

摘要: 给一个字符串,求插入最少的字符使之成为回文,回文就是顺着读和逆着读是一样的。。。针对这个性质,把一个字符串化为两个,一个顺着,一个逆着,然后找一次最长公共子序列,插入的最少字符数即为字符串的长度-最长公共子序列的长度。另一种做法(我自己想太多),是从2序列比对中找的灵感,和最长公共子序列的做法差不多,但是效果不好,2序列比对可用来解再复杂一点点的问题会更好。。。2序列比对,中间有插入,删除,替换三种操作,给每种操作(比对)赋予代价值。。求两个序列的最优比对值照抄《算法设计与分析导论》中P140转移方程为见代码中的注释:贴代码:先贴LCS的代码:View Code 1 #include < 阅读全文

posted @ 2013-05-13 20:51 allh123 阅读(197) 评论(0) 推荐(0) 编辑

2013年5月10日

POJ 1458 Common Subsequence DP LCS 最长公共子序列

摘要: 最长公共子序列,照抄《算法设计与分析导论》P138-140设输入的两个字符串分别为a1,a2,```,am(串a)b1,b2,````,bn(串b)设d(i,j)为字符串a1,a2,`````,ai和b1,b2,```,bj的最长公共子序列的长度如果a[i] == b[j],那么d(i,j) = d(i-1,j-1)+1;如果a[i] != b[j],那么 d(i,j) = max(d(i-1,j) , d(i,j-1))边界条件为d(0,0) = d(0,j) = d(i,0) = 0,1 <= i <= m,1 <= j <= n中间为节省空间,用到滚动数组,我为了 阅读全文

posted @ 2013-05-10 00:03 allh123 阅读(129) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页

导航