上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: DP真心难。。。。不过这题还是比较简单的,状态转移为d[j]=d[j]>d[j-value[i-1]]*probi[i-1]?d[j]:d[j-value[i-1]]*probi[i-1];d[j]表示抢到j元的时候不被抓的最大概率#include<stdio.h>#include<stdlib.h>#include<math.h>#include<algorithm>#include<string.h>using namespace std;int sum;//能获得的最大值double Floor;int value[110 阅读全文
posted @ 2012-08-09 20:50 willzhang 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 完全背包问题,并且要求恰好装满背包且求的是最小值#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>#define MAX 9999999999using namespace std;int sumweight;//int weight[550];int value[550];int N;//硬币种类数目__int64 d[10010];int main(){ int total; scanf("%d& 阅读全文
posted @ 2012-08-09 09:47 willzhang 阅读(157) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int N,M;int cost[3500];int desire[3500];int d[2][13000];//d[i][j]表示将前i件物品放入容量为j的背包的最大值int main(){ while(scanf("%d %d",&N,&M)!=EOF) { int i,j; fo 阅读全文
posted @ 2012-08-08 21:11 willzhang 阅读(618) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int n;int a[110][110];int h[110][110];int f[110];int mmax;int d[110];//d[i]为以i结尾的f段的最大值void dp(){ int i; d[0]=f[0]; if(mmax<d[0]) { mmax=d[0]; } for(i=1;i<n 阅读全文
posted @ 2012-08-08 11:22 willzhang 阅读(237) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int m,n;//m行n列int h[110][110];int d[110][110];int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};bool in(int x,int y){ if(x>=0&&x<m&&y>=0&& 阅读全文
posted @ 2012-08-08 09:26 willzhang 阅读(189) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int n,m;#define MIN -65530int a[110][110];int d[110][110];//到达此点之后还能获得的最大值void dp(int i,int j){ int jj; for(jj=j+1;jj<=m-n+i+1;jj++) { if(d[i+1][jj]==MIN) { d. 阅读全文
posted @ 2012-08-07 22:03 willzhang 阅读(183) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int n;int a[40010];int d[40010];int b[40010];int dmax;int main(){ int total; scanf("%d",&total); int i; while(total--) { scanf("%d",&n 阅读全文
posted @ 2012-08-07 20:38 willzhang 阅读(116) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>using namespace std;int a[5002];int d[5002];int n;int main(){ while(scanf("%d",&n)!=EOF) { int i; for(i=0;i<n;i++) { scanf("%d",&a[i]); } int k=n; //.. 阅读全文
posted @ 2012-08-07 09:50 willzhang 阅读(135) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>using namespace std;int a[5002];int d[5002];int main(){ int cases=1; while(scanf("%d",&a[0]),a[0]+1) { int k=1; while(scanf("%d",&a[k]),a[k]+1) { k++; } / 阅读全文
posted @ 2012-08-07 09:40 willzhang 阅读(148) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int num1;int num2;char str1[1010];char str2[1010];int d[1010][1010];void init(){ int i,j; for(i=0;i<=num1;i++) { for(j=0;j<=num2;j++) { d[i][j]=-1; } ... 阅读全文
posted @ 2012-08-06 23:05 willzhang 阅读(131) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页