2013年3月4日

PKU POJ 1989 The Cow Lineup 贪心策略

摘要: 将输入序列划分为若干段,每段包含1~k至少各一个。有几个这样的段(如x)就能形成x长度的任意序列。所以最短不存在的序列长度为x+1。#include<iostream>using namespace std;bool flag[10000];int main(){ int n,k,tmp,cnt,len; while (scanf("%d%d",&n,&k)!=EOF) { memset(flag,true,k+1); cnt=0; len=0; while (n--) { scanf... 阅读全文

posted @ 2013-03-04 20:22 Deller 阅读(138) 评论(0) 推荐(0)

openCV2.4.3安装办法

摘要: openCV2.4.3安装办法:第一步:下载openCV2.4.3;第二步:解压到要安装的目录,即可完成安装,如:D:\opencv;第三步:配置系统环境变量,在PATH中加入:D:\opencv\build\x86\vc10\bin以上三步即完成openCV2.4.3的安装,现在就可以打开VS2010进行使用。新建一个C++工程时,修改项目属性,在include下加入以下三条:D:\opencv\build\include\opencv2;D:\opencv\build\include\opencv;D:\opencv\build\include;在library下加入一条:D:\openC 阅读全文

posted @ 2013-03-04 18:29 Deller 阅读(284) 评论(0) 推荐(0)

POJ PKU 3176 Cow Bowling DP

摘要: 二维基础DP。#include<iostream>using namespace std;inline int mmax(int a,int b){ return a>b?a:b;}int main(){ int n,a[355][355],i,j; while (scanf("%d",&n)!=EOF) { for (i=0;i<n;++i) for(j=0;j<=i;++j) scanf("%d",&a[i][j]); for (i=1;i<n;++i) { ... 阅读全文

posted @ 2013-03-04 18:27 Deller 阅读(131) 评论(0) 推荐(0)

POJ PKU 2029 Get Many Persimmon Trees DP

摘要: DP预处理矩阵,使每个节点存储左上上角的总数,再枚举得结果。#include<iostream>using namespace std;int w,h,map[105][105];int main(){ int n,i,j,s,t; while (scanf("%d",&n)!=EOF&&n) { scanf("%d%d",&w,&h); for(i=0;i<=w;++i) for(j=0;j<=h;++j) map[i][j]=0; while (n--) { ... 阅读全文

posted @ 2013-03-04 18:26 Deller 阅读(147) 评论(0) 推荐(0)

PKU POJ 2346 Lucky tickets DP

摘要: DP统计1~5位数的各位数字和的分布。#include <stdio.h>#include <memory.h>#include <iostream>int main(){ int i,j,k,dp[6][50],m,n,cnt; memset(dp,0,sizeof(dp)); for (i=0;i<=9;++i) dp[1][i]=1; m=9; for(i=2;i<6;++i) { for (j=0;j<=9;++j) for(k=0;k<=m;++k) dp[i][k+j... 阅读全文

posted @ 2013-03-04 18:23 Deller 阅读(197) 评论(0) 推荐(0)

PKU POJ 1664 放苹果 DP

摘要: 题目意思很明确:给定一个正整数n,求将其划分为m份的不同方法数。这里是整数分割(整数划分)的方法。动态规划方法(1) 最原始的动态规划:考虑划分过程中的最大数 k,令dp[i][j][k]表示将整数j划分成 i 份,而最后一个数最大为 k 的划分方案总数。那么:该状态(i, j, k)可由前面“i-1”份的“j-k”加上“一份k”而来,因此当前状态的方案总数就等于“j-k”划分为i-1份的所有最大加数小于等于k的方案数至和。得到状态转移方程:dp[i][j][k] = SUM{ dp[i-1][j-k][l] | 0 <= l <= k }DP算法1: O(n^3*m)Set al 阅读全文

posted @ 2013-03-04 18:21 Deller 阅读(245) 评论(0) 推荐(0)

PKU POJ 2414 Phylogenetic Trees Inherited DP

摘要: 英语水平有限,题目意思看了下面博客才懂http://www.cnblogs.com/Lyush/archive/2013/01/11/2857012.html意思是:给定N个字符串,N为2的幂,每个字符串长度为L,这N个字符串 是一棵完全二叉树的叶子节点,现在问树的内部在同样要填入长度为L的字符串的情况下,最少的花费是多少,根节点是什么。用DP从叶子节点向根节点计算,dp数组从根1开始,dp[i][j]是某个叶子节点的第j个字母的所有可能取值。用32位整数最后26位代表是否取某个字母。#include<iostream>#include <string.h>#inclu 阅读全文

posted @ 2013-03-04 18:15 Deller 阅读(184) 评论(0) 推荐(0)

PKU POJ 1240 Pre-Post-erous! 搜索

摘要: 题目意思很明确,给点一个m叉树的前序访问s1和后续访问s2,计算出所有可能的m叉树的总数。用搜索分层进行可以计算,这里注意组合数的计算,不要溢出。#include<iostream>#include <string.h>#include <string>using namespace std;int m;char s1[30],s2[30];int c(int r,int n){ int res=1; for (int i=1;i<=r;++i) res=res*(n-r+i)/i; return res;}int searchin2(char c){ 阅读全文

posted @ 2013-03-04 18:14 Deller 阅读(150) 评论(0) 推荐(0)

PKU POJ 2181 Jumping Cows DP

摘要: 题目意思是从数列中选出一个子序列,然后堆该数列依次加一个减一个,最后得到的和最大。dp[0]记录之前处理过的数中,加一个数后得到的最大值;dp[1]则是记录减一个数后的最大值。#include<iostream>#include <string.h>#include <string>using namespace std;inline int mmax(int a,int b){ return a>b?a:b;}int main(){ int p,i,s,dp[2]; while (scanf("%d",&p)!=EOF) 阅读全文

posted @ 2013-03-04 18:13 Deller 阅读(129) 评论(0) 推荐(0)

PKU POJ 1958 Strange Towers of Hanoi DP

摘要: 一维DP,不用进行递归。#include<iostream>using namespace std;int main(){ int n,k,min[13]; min[1]=1; min[2]=3; printf("1\n3\n"); for (n=3;n<=12;++n) { min[n]=0x7fffffff; for (k=1;k<n;++k) if(min[n]>(min[k]<<1)+(1<<(n-k))-1) min[n]=(min[k]<<1)+(1<<(n-k))-... 阅读全文

posted @ 2013-03-04 18:12 Deller 阅读(142) 评论(0) 推荐(0)

PKU POJ 1414 Life Line 搜索

摘要: 题目很简单,就是在题目给点的区域划分下,判定哪些个区域和0相接,以及计算每个区域的节点数。搜索可以做,要注意搜索方向的设置。#include<iostream>using namespace std;int n,c,s[15][15];bool flag[15][15];int dir[6][2]={{-1,0},{-1,-1},{0,-1},{1,1},{0,1},{1,0}};inline bool judge(int x,int y){ return x>0&&y>0&&x<=n&&y<=x;}bool 阅读全文

posted @ 2013-03-04 18:09 Deller 阅读(170) 评论(0) 推荐(0)

导航