這個題是乙個完全揹包問題,對於大招,我們有三種選擇:l,l
+i,r
l, l + i, r
l,l+i,
r,最終的方案中l+i
l + i
l+i最多出現一次,於是先用前三個
物品+l
+r
前三個物品+l + r
前三個物品+
l+r這五個物品跑完全揹包,然後用l+i
l + i
l+i更新一遍dp[
v]
dp[v]
dp[v
]
#include
using
namespace std;
typedef
long
long ll;
//三年競賽一場空,不開long long見祖宗
//typedef __int128 lll;
#define print(i) cout << "debug: " << i << endl
#define close() ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define mem(a, b) memset(a, b, sizeof(a))
#define pb(a) push_back(a)
#define x first
#define y second
typedef pair<
int,
int> par;
const ll mod =
1e9+7;
const
int maxn =
1e5+10;
const
int inf =
0x3f3f3f3f
;ll v;
ll val[10]
, cost[10]
;ll dp[maxn]
;int
main()
cout << dp[v]
<< endl;
}}
牛客 小明打聯盟 揹包dp
小明很喜歡打遊戲,現在已知乙個新英雄即將推出,他同樣擁有四個技能,其中三個小技能的釋放時間和固定的傷害值為 他還有乙個大招,其釋放的時間是乙個區間 l,r 可以在區間內任意時間點釋放出技能,其如果在l i時刻釋放技能,其能夠打出的傷害值為 temp a i 這裡temp值表示技能的基礎傷害 同時也就...
小明打聯盟 斜率 單調佇列 優化dp 揹包
題目描述 小明很喜歡打遊戲,現在已知乙個新英雄即將推出,他同樣擁有四個技能,其中三個小技能的釋放時間和固定的傷害值為 他還有乙個大招,其釋放的時間是乙個區間 l,r 可以在區間內任意時間點釋放出技能,其如果在l i時刻釋放技能,其能夠打出的傷害值為 temp a i 這裡temp值表示技能的基礎傷害...
揹包 DP 揹包
揹包 題目 是dp中較為常見的題目 分為 0 1 揹包 完全揹包 和多重揹包 這三類 是越來越深入的首先來介紹一下 0 1揹包 首先 0 1 揹包的含義是 給你乙個容量位m的揹包 然後給你n個物品 每個物品具有一定價值和一定重量 會站一定的揹包空間 答案是在n個物品中那幾個 然後使得到的價值最大 首...