摘要: 设置一个状态数组表示到达这个重量的一张牌的序号,状态转移方程pos[i][j]=i {if(pos[i][j-v[i]]!=0)} 1 #include 2 #include 3 4 int main() 5 { 6 int tag,t,n,i,j,k,v[101]; 7 char pos[2][100001],pos1[101]; 8 scanf("%d",&t); 9 scanf("%d",&n);10 memset(pos[0],0,sizeof(char)*(t+1));11 j=0;12 for(i=1;i=0)25 ... 阅读全文
posted @ 2013-07-02 12:19 simplesslife 阅读(210) 评论(0) 推荐(0)
摘要: 每个状态代表可表示的种类数 状态转移方程 s[j]=s[j-c[i]]+s[j] 1 #include 2 #include 3 4 int main() 5 { 6 int v,n,i,j,k,c[26],s[10001]; 7 scanf("%d %d",&v,&n); 8 for(i=1;i=0) 19 if(s[j-c[i]]>0)20 s[j]+=s[j-c[i]];21 }22 }23 printf("%d\n",s[n]);24 while(true);25 ... 阅读全文
posted @ 2013-07-02 11:08 simplesslife 阅读(164) 评论(0) 推荐(0)
摘要: 1 #include 2 #include 3 4 struct thing 5 { 6 int w[3],v[3]; 7 int size; 8 }; 9 10 int main()11 {12 struct thing t[61];13 int i,tag,tag2,j,k,n,m,v,w,p;14 int s[2][32001];15 memset(s[0],0,sizeof(int)*32001);16 scanf("%d %d",&n,&m);17 tag=1;18 for(i=1;i=0&&s[(i-1)%... 阅读全文
posted @ 2013-07-02 10:38 simplesslife 阅读(216) 评论(0) 推荐(0)
摘要: 0/1背包问题,状态转移方程 if(j-w[i]>=0) s[i][j]=max(s[i-1][j],s[i-1][j-w[i]]+w[i]*v[i]) else s[i][j]=s[i-1][j]可能有超内存的问题,实际上只需要两个转移的状态就可以了。 1 #include 2 #include 3 4 5 int main() 6 { 7 int i,tag,j,n,m,w[26],v[26],s[2][30001]; 8 scanf("%d %d",&n,&m); 9 for(i=1;is[(i-1)%2][j])18 {19 ... 阅读全文
posted @ 2013-07-02 00:50 simplesslife 阅读(156) 评论(0) 推荐(0)
摘要: 根据草药的不可重复性而作为最外层循环,状态转移方程if(j>=w[i]) s[i][j]=max(s[i-1][j],s[i-1][j-w[i]+v[i]) else s[i][j]=s[i-1][j] 1 #include 2 #include 3 4 5 6 int main() 7 { 8 int t,m,i,j,w[101],v[101],s[101][1001]; 9 scanf("%d %d",&t,&m);10 for(i=1;i<=m;i++)11 {12 scanf("%d %d",&w[i],&am 阅读全文
posted @ 2013-07-02 00:13 simplesslife 阅读(175) 评论(0) 推荐(0)