摘要: 题意:题目太长没看,直接看输入输出猜出是最长下降子序列用了以前的代码直接a了,做法类似贪心,把最小的顺序数存在数组里面,每次二分更新数组得出最长上升子序列#include#includeusing namespace std;int main(){ int dp[40002],a[40002],n,t,i,low,up,top,mid,max,tmp,k,b[40002],cas=1; while(1) { scanf("%d",&tmp); if(tmp==-1) break; k=1; b[k++]=tmp; while(scanf("%d" 阅读全文
posted @ 2013-12-02 21:28 Teemo的技术blog 阅读(117) 评论(0) 推荐(0)
摘要: 题意:给你N个种硬币,价值和数量,知道手表不大于m,问能组成(1~m)的价格有多少种情况套套上次那题的模板直接就行了,http://blog.csdn.net/neng18/article/details/17060539#include #include#includeusing namespace std;#define MAXV 150#define MAXM 100050int cash,n,value[MAXV],c[MAXV],f[MAXM],user[MAXM];int main(){ int i,j,max; while(scanf("%d%d",& 阅读全文
posted @ 2013-12-02 20:16 Teemo的技术blog 阅读(89) 评论(0) 推荐(0)
摘要: 题意:略用手机敲的代码真是泪流满面,终于过了#includeusing namespace std;int dp[110][110];void solve(){ int i,j; memset(dp,0,sizeof(dp)); for(i=1;ii) dp[i][j]=dp[i][i]; else dp[i][j]=dp[i-j][j]+dp[i][j-1]; }}int main(){ int n,m,t; solve(); cin>>t; while(t--){ ci... 阅读全文
posted @ 2013-12-02 19:30 Teemo的技术blog 阅读(104) 评论(0) 推荐(0)
摘要: 题意:略多重背包#include #include#includeusing namespace std;#define MAXV 15#define MAXM 100050int cash,n,value[MAXV],c[MAXV],f[MAXM],user[MAXM];int main(){ int i,j,max; while(~scanf("%d%d",&cash,&n)){ for(i=1;imax) max=j; } } printf("%d\n",max); } return 0;} 阅读全文
posted @ 2013-12-01 21:52 Teemo的技术blog 阅读(79) 评论(0) 推荐(0)
摘要: 题意:略求最长公共子串#include#include#includeusing namespace std;int dp[500][500];int max(int a,int b){ return a>b?a:b;}int main(){ int i,j,a,b; char s1[400],s2[400]; while(scanf("%s%s",s1,s2)!=EOF) { memset(dp,0,sizeof(dp)); a=strlen(s1); b=strlen(s2); for(i=1;i<=a;i++) { for(j=1;j<=b;j++) 阅读全文
posted @ 2013-12-01 21:49 Teemo的技术blog 阅读(90) 评论(0) 推荐(0)
摘要: 题意:给你n种花,m个盆,花盆是有顺序的,每种花只能插一个花盘i,下一种花的只能插i#include#includeusing namespace std;#define N 110int dp[N][N],a[N][N];int main(int argc, char** argv) { int n,m,i,j; while(scanf("%d%d",&n,&m)!=EOF){ memset(dp,0,sizeof(dp)); for(i=1;ii) dp[i][j]=max(dp[i][j],dp[i][j-1]); } printf("%d\ 阅读全文
posted @ 2013-11-27 20:58 Teemo的技术blog 阅读(72) 评论(0) 推荐(0)
摘要: 题意:略直接用记忆化搜索就行了#include#includeusing namespace std;int n,m;int map[105][105];int len[105][105]={0};int dp(int x,int y){ int max,temp; if(len[x][y]) return len[x][y]; max=0; if(x+1map[x+1][y]) { temp=dp(x+1,y)+1; if(max=0&&map[x][y]>map[x-1][y]) { temp=dp(x-1,y)+1; if(maxmap[x][y+1]) { tem 阅读全文
posted @ 2013-11-27 20:02 Teemo的技术blog 阅读(100) 评论(0) 推荐(0)
摘要: 题意:给你n个凳子,接着告诉你一个凳子从a房间到b房间,运输时间为10分钟,走廊很窄能通过一张凳子,当然不堵塞的话能同时扮凳子,问最小花费多少时间因为数据很小就直接用数组统计了,a,b如果是奇数的话就变成偶数(这个不冲突),直接累加过去。#include #include#include#includeusing namespace std;#define N 410int main(int argc, char** argv) { int room[N],a[N],b[N],t,ans,n,i,j; scanf("%d",&t); while(t--){ mems 阅读全文
posted @ 2013-11-26 22:49 Teemo的技术blog 阅读(122) 评论(0) 推荐(0)
摘要: 题意:求最大子矩阵和利用dp[i]每次向下更新,构成竖起的单条矩阵,再按不小于零就加起来来更新,构成更大的矩阵#include #include#include using namespace std;#define N 110int map[N][N],dp[N];int main(int argc, char** argv) { int n,i,j,k,maxn,ans; while(scanf("%d",&n)!=EOF){ ans=-9999999; for(i=0;ians) ans=maxn; } } } printf("%d\n", 阅读全文
posted @ 2013-11-26 21:48 Teemo的技术blog 阅读(134) 评论(0) 推荐(0)
摘要: ]POJ 动态规划题目列表容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740(博弈), 1742, 1887, 1926(马尔科夫矩阵,求平 衡), 1936,1952, 1953, 1958, 1959, 1962, 1975, 1989, 2018, 2029,2039, 2063, 2081, 2082,2181, 2184, 2192, 2231, 2279, 阅读全文
posted @ 2013-11-26 21:07 Teemo的技术blog 阅读(166) 评论(0) 推荐(0)