牛牛在玩乙個線性魔塔遊戲,地圖是一條[-n,n]的直線段。
怪物在[-n,-1].[1,n]的每個位置都有分布。同向的怪物互相遮擋,比如如果要攻擊
位置為3的怪物,必須在攻擊之前擊殺位置為1和2的怪物,如果要攻擊-2位置的怪
物,也必須先擊殺位置-1的怪物。
每乙個怪物需要消耗勇者a;的生命值,殺死某個怪物後會給勇者恢復b;的血量。
勇者的生命值在非負的時候被認為犧牲,勇者的生命值沒有上限。
牛牛想知道,勇士初始時擁有多少生命值,可以用策略殺完所有怪物。
輸入描述:
第一行輸入乙個整數n,如題目中所示。
隨後一行﹐輸入2n個整數ai﹐分別表示按[-n,-1],[1,n]的順序﹐殺死怪物
消耗的勇者的生命值·
隨後一行﹐輸入2n個整數ai﹐分別表示按[-n,-1],[1,n]的順序﹐殺死怪物
後勇者恢復的生命值·
對於20%的資料有n≤5。
對於40%的資料有n≤10。
對於60%的資料有n≤30。
對於80%的資料有n≤100。
對於100%的資料有n≤1000,0≤ai ,bi ≤106
俞出描述:
輸出一行乙個整數﹐表示答案·
示例1輸入輸出示例僅供除錯,後台判題資料般不包:輸入2
6 5 8 9
1 20 1 0輸出7
說明先擊殺-1位置的怪物﹐生命值-5=2﹐恢復+20=22
再擊殺位置-2的怪物﹐生命值-6=16﹐恢復+1=17。
再擊殺位置1的怪物﹐生命值-8=9,恢復+1=108
再擊殺位置2的怪物﹐生命值-9=1。
此時﹐勇者已經擊殺了所有怪物。
通過70%版本,兩個策略,先右後左,或先左後右
#includetypedef long long int ll;
using namespace std;
int main();
for(int i = 0;i < m;++i)
for(int i = 0;i < m; ++i)
int ans1 = 0;
for(int i = n; i < m; ++i)
sum += b[i];
}for(int i = n - 1; i >= 0 ; --i)
sum += b[i];
}if(sum == 0) ans1++;
//sum = 0;
int ans2 = 0;
for(int i = n - 1; i >= 0 ; --i)
sum += b[i];
}for(int i = n; i < m; ++i)
sum += b[i];
}if(sum == 0) ans2++;
int ans = min(ans1 , ans2);
cout《通過50%版本,綜合策略,從中間開始,哪邊掉的血最小去哪邊
#includetypedef long long ll;
using namespace std;
int main();
for(ll i = 0;i < m;++i)
for(ll i = 0;i < m; ++i)
vectorc(m);
for(ll i = 0; i < m; ++i)
ll ans1 = 0;
int left = n - 1, right = n;
while(left >= 0 && right < m)
sum += b[left];
left--;
}else
sum += b[right];
right++;}}
while(left >= 0)
sum += b[left];
left--;
}while(right < m)
sum += b[right];
right++;
}cout
}
小李打怪獸
小李對故鄉的思念全部化作了對霧霾天氣的怨念,這引起了掌控霧霾的邪神的極大不滿,邪神派去了乙隻小怪獸去對付小李,由於這只怪獸擁有極高的iq,它覺得直接消滅小李太沒有難度了,它決定要和小李在智力水平上一較高下。我們可否幫助小李來戰勝強大的怪獸呢?問題是這樣的 給定一堆正整數,要求你分成兩堆,兩堆數的和分...
牛牛打怪獸
牛牛在各個平台被各種傳奇遊戲的廣告轟炸,所以他決定去玩一玩這類的遊戲。這類遊戲掛機就可以公升級,所以牛牛每天都能變強。在第i天裡,牛牛能殺死防禦力小於等於i的怪物。但由於牛牛還要刷題,所以牛牛每天最多殺乙隻怪物。這個遊戲共有n只怪物,每只怪物的防禦力為defi 牛牛想知道最少要到第幾天才能把這n只怪...
牛客網 牛牛打怪獸
題目描述 題意身為屯里第一劍士的牛牛來到訓練場裡闖關,由於過於勤奮,牛牛的寶劍的耐久度降到了 22 這意味著牛牛最多只能打倒兩隻怪獸,否則將會被淘汰。訓練場的地圖可以看作一棵以 11 為根節點的樹,訓練場的終點為這棵樹的葉子結點,樹上的每個結點最多有乙隻怪獸,結點與結點間的邊上沒有怪獸。每乙個有怪獸...