問題描述
在上次偷襲了b軍大本營之後,b軍非常憤怒,正式向a軍宣戰。
a軍又獲取了一些情報。
b軍有n個士兵,每個士兵有a[i]的生命值,以及b[i]的防禦力。
a軍一共有m個士兵,第i個士兵,需要消耗k[i]的體力,造成p[i]點傷害。
當然,如果a軍派出第i個士兵打在b軍第j個士兵的話,會使得b軍第j個士兵的生命值減少p[i]-b[j],當然如果傷害小於防禦,那麼攻擊就不會奏效。
如果某個b軍士兵的生命值降為0或以下,那麼這個b軍士兵就會被消滅。
假設每個a軍士兵都開了掛,可以無限次上陣殺敵,而且從不會受傷。
請問a軍最少消耗多少體力,就可以消滅所有的b軍士兵。
輸入格式
資料的第一行有兩個整數n,m,表示b軍有n個士兵,a軍有m個士兵。
接下來n行,每行兩個整數,a[i],b[i],分別表示b軍每個士兵的生命值和防禦力。
再接下來m行,每行兩個整數k[i]和p[i],分別表示a軍每個士兵的體力消耗和技能的傷害值。
資料範圍:
1<=n<=100000
1<=m<=1000
1<=a[i]<=1000
0<=b[i]<=10
0<=k[i]<=100000
0<=p[i]<=1000
輸出格式
對於給出的資料,輸出最小的體力消耗值,如果不能消滅所有的b軍士兵,輸出-1。
樣例輸入
1 23 5
10 7
8 6樣例輸出
18原題軍
哈哈哈,這是動態規劃的經典揹包題啊!!!!!!!!!!!!
誰是容量誰是價值什麼的,自己想,很簡單,雖然我敲了半小時。
#include #define inf 1e9
using namespace std;
int k[1005],p[1005];
int a[100005], b[100005];
int dp[15][1005];
int main()
} }long long re=0;
bool flag=1;
for(int i=0;ire+=dp[b[i]][a[i]];
} if(flag) printf("%lld\n",re);
else printf("-1\n");
return 0;
}
10101 正面交鋒
問題描述 在上次偷襲了b軍大本營之後,b軍非常憤怒,正式向a軍宣戰。a軍又獲取了一些情報。b軍有n個士兵,每個士兵有a i 的生命值,以及b i 的防禦力。a軍一共有m個士兵,第i個士兵,需要消耗k i 的體力,造成p i 點傷害。當然,如果a軍派出第i個士兵打在b軍第j個士兵的話,會使得b軍第j個...
企業微信上線了,跟阿里的釘釘展開正面交鋒
目前這個戰場的主要玩家還有釘釘和紛享銷客。紛享銷客成立五年,產品已完成 從企業內部的交流平台到銷售管理工具,再到今天的移動辦公平台 的兩次轉型 5輪融資,平台的企業註冊使用者達到30多萬,是去年同期的6倍,企業續費率超過70 全職員工超過2000人,渠道公司員工超過4000人。2 休息一下的功能很人...
正面管教php 我就這樣走進正面管教
我和 正面管教 還有一段淵源,2015年學校曾發給每個老師一本簡 尼爾森博士寫的 正面管教 我記得是王校長推薦的。那時,我們還組織了一次教師的學習會。因自己也是囫圇吞棗般讀完,印象最深的只有 和善與堅定 這五個字。後來和正面管教講師楊華京老師有了連線,就在今年5月邀請到楊老師團隊來學校給家長做正面管...