上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 57 下一页

2011年8月22日

DP之八

摘要: //sicily 1166. Computer Transformat#include<iostream> //DP+高精度using namespace std;#define M 50int Bit(int p){ if(p==0) return 1; int bit=0; while(p!=0) { p/=10; bit++; } return bit;}class Longint //高精度{public: Longint() { for(int ... 阅读全文

posted @ 2011-08-22 12:15 sysu_mjc 阅读(152) 评论(0) 推荐(0) 编辑

DP之九

摘要: //sicily 1685. Missile#include<iostream> //DP, O(n^2)的时间复杂度,n<=1000,数据规模较小using namespace std;int main(){ int n,h[1002],dp[1002][2]; //dp[i][0],表示以第i个数作为结束,此时第i个数在顺序上是偶("the even missile to destroy"),而dp[i][1]则表示第i个数在顺序上是奇("the odd missile to destroy") while(cin>>n 阅读全文

posted @ 2011-08-22 12:15 sysu_mjc 阅读(121) 评论(0) 推荐(0) 编辑

DP之六

摘要: //sicily 1197. Hotel#include<iostream> //DP,含通用符的字符串的最长匹配#include<string>#include<cstring>using namespace std;string str[10010]; int f[60][60]; //f[i][j]=1,表示一个字符串的0-i子串与另一个字符串的0-j子串匹配,f[i][j]=0则是不匹配int dp(int i,int j,int id) //返回f[i][j],表示字符串str[0][0-i]与字符串str[id][0-j]是否匹配{ ... 阅读全文

posted @ 2011-08-22 12:13 sysu_mjc 阅读(150) 评论(0) 推荐(0) 编辑

DP之七

摘要: //poj 1157 LITTLE SHOP OF FLOWERS#include <iostream> using namespace std;int ans[105][105],d[105][105];const int least=INT_MIN;int dp(int i,int j){ if(d[i][j]!=least) return d[i][j]; int m=least; for(int k=i;k<=j;++k) { if(dp(i-1,k-1)+ans[i][k]>m) ... 阅读全文

posted @ 2011-08-22 12:13 sysu_mjc 阅读(115) 评论(0) 推荐(0) 编辑

DP之五

摘要: //sicily 1274. Pascal's Travels/*题意:在一个N×N的底盘上,每一格有一个非负整数,表示在那一格可以向右或向下走几步。问每次只能向右或向下走,从左上角的格子走到右下方的格子有多少种不同的方案。dp[i][j]表示到从左上角到(i,j)的方案数dp[i][j]+=(dp[i][u])+(dp[v][j]),1<=u<j, 1<=v<i,如果(i,u)能走到(i,j), (v,j)能走到(i,j)*/#include<iostream> //DP#include<cstring>using names 阅读全文

posted @ 2011-08-22 12:12 sysu_mjc 阅读(117) 评论(0) 推荐(0) 编辑

DP之三

摘要: //sicily 1345. 能量项链#include<iostream> //DP#include<cstring>using namespace std;int n,num[210][2],dp[210][210];int main(){ while(cin>>n) { for(int i=1;i<=n;++i) cin>>num[i][0]; for(int i=1;i<=n;++i) //样例中,num[1-8]=(2,3),(3,5),(5,10),(10,2),(2,3),(3,5),(5,1... 阅读全文

posted @ 2011-08-22 12:11 sysu_mjc 阅读(234) 评论(0) 推荐(0) 编辑

DP之四

摘要: //sicily 1763. 传球游戏#include<iostream> //DP#include<cstring>using namespace std;int main(){ int n,m,dp[100][100]; while(cin>>n>>m) { memset(dp,0,sizeof(dp)); dp[1][0]=1; //初始化,一开始球在 1 号手里 for(int j=1;j<=m;++j) //dp[i][j]表示球经传递 j 次后落在第 i 个同学的方... 阅读全文

posted @ 2011-08-22 12:11 sysu_mjc 阅读(106) 评论(0) 推荐(0) 编辑

DP之一

摘要: //sicily 1564. HOUSING/*对一个数分解成几个因子之和,因子数目不限,但必须不小于5,求有多少种组合方式比如 m(17) = 7 (namely 17, 5 + 12, 6 + 11, 7 + 10, 8 + 9, 5 + 5 + 7, 5 + 6 + 6)为避免重复(5 + 5 + 6, 5 + 6 + 5 and 6 + 5 + 5 are counted only once.),规定因子的序列是上升的于是可以用 dp[i][j] 来表示对 i 分解且第一个因子为 j 的组合数。状态转移方程: dp[i][j]+=dp[i-j][k]; 这里 5<=j<=i 阅读全文

posted @ 2011-08-22 12:10 sysu_mjc 阅读(150) 评论(0) 推荐(0) 编辑

DP之二

摘要: //sicily 1037. Decorations//两个字符串ch[i],ch[j],长度都一样为len,如果ch[i][1..len-1]=ch[j][0..len-2],则表示连接,ch[i]->ch[j]//把每个输入的字符串当作顶点,字符串之间若是连接则建立一条边,由此得到初始图,//问题转化成求 顶点数 l-len+1 的路径总数,可以用DP求解#include<iostream> //DP#include<cstring>using namespace std;int n,l,m,len,cnt[602][602],dp[602][602];cha 阅读全文

posted @ 2011-08-22 12:10 sysu_mjc 阅读(133) 评论(0) 推荐(0) 编辑

DFS之四

摘要: //sicily 1158. Pick numbers#include<iostream>using namespace std;int m,n,table[20][20],res;void dfs(int s,int x,int y){ s+=table[x][y]; if(x==m&&y==n&&s>0) { if(res==-1) res=s; else res=min(res,s); } if(x<m) dfs(s,x+1,y); if(y<n) ... 阅读全文

posted @ 2011-08-22 12:09 sysu_mjc 阅读(110) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 57 下一页

导航