題意:
有個很忙的人要洗衣服;
衣服有 m 種顏色,有n堆;
題目說必須把一種顏色的衣服洗了才能洗其他顏色的;
每一堆衣服都有乙個洗的時間和顏色;
每次洗衣服都可以洗兩堆;
求洗衣服的最短時間;
理解:又是乙個01揹包;
根據題意可知,每一種顏色有乙個最短時間值;
求每一種顏色的最短時間值就是用01揹包;
就是就算在所有時間中找出和最接近 sum / 2 的最大值;
遞推式:dp[i] = dp[i] + dp[i - v[i]] + v[i];
初始值都為0;
**如下:
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
typedef long long ll;
typedef pairpii;
const int min_inf = 1e-7;
const int max_inf = (1e9) + 7;
#define x first
#define y second
typedef pairpis;
int main()
vectorvec(n);
for (int i = 0; i < n; ++i)
int ans = 0;
for (int i = 0; i < m; ++i)
}vectordp(sum / 2 + 10, 0);
for (int j = 0; j < v.size(); ++j)
}ans += max(dp[sum / 2], sum - dp[sum / 2]);
}cout << ans << endl;
}return 0;
}
POJ1276 多重揹包(01揹包 完全揹包)
多重揹包模板題,給定揹包容量 v 給定 n 種物品,每種物品的個數 n i 體積 v i 和重量 w i 已知,求揹包能裝下的物品的最大重量。對應本題就是,給定提款的金額cash,給定 n 種錢幣,每種錢幣的個數為 n i 面額 d i 已知,求能兌換的錢幣的最大值。本題中,體積和重量都等於面額。7...
dp揹包之01揹包poj2184
題意 給定兩個屬性,求這兩個屬性的和的最大值.思路 將第乙個屬性往後平移1000個單位,然後推導其動態轉移方程,若是dp i 代表當加入第乙個屬性加到i時,符合題意的第二個屬性的最大值.題意是兩個屬性的和的最大值,那麼動態轉移方程必然不是dp j max dp j dp j s i 0 s i 1 ...
陣列01 轉換方法 字串
let a 1,2,3,4,5 1.tostring 返回由陣列中每個值的等效字串拼接而成的逗號分隔的字串。a.tostring 1,2,3,4,5 陣列中的每個值都會呼叫tostring 方法,然後用逗號分隔得到最終字串。2.tolocalstring a.tolocalstring 1,2,3,...