poj 2184 01揹包變形

2021-07-03 21:45:26 字數 1119 閱讀 3097

題意:

有k組數,si 和 fi,s和f的範圍是 【 -1000, 1000】。

現在要挑選其中的一些組,使所選的組 si的和 與 fi的和  的和 最大, 並且 si 的和 不能小於0,fi 的和 也是。

問 滿足條件的 最大的 si 的和 與 fi 的和  的 和。。。。。。。

解析:01揹包的變形。

首先將 si 看做每個物品的費用,fi 看做體積。

然後由於有負數出現,所以把 0 點 往大了調,並在 si < 0 時相應的做遍歷的調整:

使得 每次詢問的時候,體積大的已經被訪問過。

注意上下邊界,j 都是從 0,到達最大揹包容量 maxn - 1。

**:

#include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

#define lson lo, mi, rt << 1

#define rson mi + 1, hi, rt << 1 | 1

using namespace std;

const int maxn = 200000 + 10;

const int inf = 0x3f3f3f3f;

const double eps = 1e-8;

const double pi = acos(-1.0);

const double ee = exp(1.0);

int zero = 100000;

int dp[maxn];

int s[maxn], f[maxn];

int main()

memset(dp, -inf, sizeof(dp));

dp[zero] = 0;

for (int i = 0; i < n; i++)

}else}}

int ans = 0;

for (int i = zero; i < maxn; i++)

}printf("%d\n", ans);

}return 0;

}

POJ 1149 (0 1揹包變形)

題意 有n種 最多5種 商品,每種商品三個屬性,自己的名字 數字 總量,價錢。現在商家正在進行打折活動,幾種商品組合的價錢會比原價低。有s種組合每種組合第乙個數字是有n種商品組合成一起,然後n對數字 代表商品的名字和數量,最後乙個數字表示這個組合的總價錢。最後輸出,要買所有商品最少花多少錢?思路 每...

POJ 1742 Coins 揹包dp變形

poj 1742 首先多重揹包有一種普通的二進位制優化,然後這題還可以加乙個判斷如果,a i c i m 的話,那就和完全揹包一樣,不用多重揹包。這樣應該能過。第二種做法,是參考了完全揹包,完全揹包可以用o nm 的複雜度完成,是因為,遍歷m的時候沒有數量的限制。那對於這題多重揹包,就要考慮在dp裡...

揹包變形 思路

居民集會 藍橋村的居民都生活在一條公路的邊上,公路的長度為l,每戶家庭的位置都用這戶家庭到公路的起點的距離來計算,第i戶家庭距起點的距離為di。每年,藍橋村都要舉行一次集會。今年,由於村里的人口太多,村委會決定要在4個地方舉行集會,其中3個位於公路中間,1個位最公路的終點。已知每戶家庭都會向著遠離公...