摘要: 题目链接第一个多进程DP,在Vijos做的第一个题是三取方格数。。。然后发现,这种DP,没见过。。。然后最搞笑的是,做CF的时候,E题神似那种问题,后悔没认真学一下,然后从基础学起,看了个讲多进程的博客,搞一下这个题。。。先是O(n^4)的暴力解法。这个题n m都是小于50的。所以暴力的方法也过了。o[i][j][k][u] 代表第一个人到达i,j第二个人到达k,u的取得最大值,其实我一直很疑惑的一个问题是,如何判断不能重复的走的方法,看博客上的处理,原来如此啊。只需要简单的特判一下 i ==k&&j == u如果为真的话,则max+p[i][j]就行了,假的话要max+p[i 阅读全文
posted @ 2012-08-01 19:09 Naix_x 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 做DP,已经有一段时间了,虽然还有很多不会的,树形DP,数位DP,状态压缩DP。。。不过也做过很多各种一维的,二维,记录一下自己做过的题,为以后整理模版,复习什么的提供方便吧。以后会不断更新!(写完发现,好多水题啊) 一定要独立思考!!! 经典入门题:最长上升子序。O(n^2)的。。话说n*log(n)的还不会呢。。。SDUT 1299 数塔 HDU 2084 数塔 最长公共子序 HDU 1159Common Subsequence 最大子段和 HDU 1003 Max Sum 编辑距离 SDUT 1225 编辑距离 杭电的DP专题 HDU 1058Humble Numb... 阅读全文
posted @ 2012-08-01 14:43 Naix_x 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 题目链接这个题,数据很变态。。WA了N次。。。看DISCUSS,过的。 1 #include <stdio.h> 2 #include <string.h> 3 #define N 125001 4 int p[60][60][60],o[60][60][60]; 5 int qua[N],qub[N],quc[N]; 6 int x[7] = {0,0,0,0,-1,1}; 7 int y[7] = {1,-1,0,0,0,0}; 8 int z[7] = {0,0,1,-1,0,0}; 9 int main()10 {11 int i,j,k,a,b,c,t,tim 阅读全文
posted @ 2012-08-01 10:55 Naix_x 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题目链接普通的DFS。。。输出字典序最大的。。。我竟然没注意。。#include <stdio.h>#include <string.h>char p[31],o[31],max[31];int k[31];int ans,z,len;void dfs(int step,int sum){ int i; if(step == 5&&sum == ans) { z = 1; o[5] = '\0'; if(strcmp(o,max) > 0) { strcpy(max,o); } ... 阅读全文
posted @ 2012-08-01 10:52 Naix_x 阅读(167) 评论(0) 推荐(0) 编辑