2011年8月10日

摘要: 二维背包问题:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。状态方程为 f[i][v][u]=max(f[i-1][v][u],f[i-1][v-a[i]][u-b[i]]+w[i])#include <stdio.h>#include <string.h>int Max(int a,int b){ ret 阅读全文

posted @ 2011-08-10 16:14 continue_n 阅读(225) 评论(0) 推荐(0)

摘要: #include <stdio.h>typedef struct NODE { int lc,rc; int grade; int first,mid,tail;}node;node s[600005];int gra[200005];int Max(int a,int b){return a>b?a:b;}void Maketree(int first,int tail,int at){ s[at].first = first; s[at].tail = tail; if( first == tail ) s[at].grade = gra[first]; else{ s[ 阅读全文

posted @ 2011-08-10 07:57 continue_n 阅读(123) 评论(0) 推荐(0)


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3