題目描述
軒軒和凱凱正在玩一款叫《龍虎鬥》的遊戲,遊戲的棋盤是一條線段,線段上有 nn 個兵營(自左至右編號 1 \sim n1∼n),相鄰編號的兵營之間相隔 1 厘公尺,即棋盤為長度為 n−1 厘公尺的線段。i 號兵營裡有 ci 位工兵。
軒軒在左側,代表「龍」;凱凱在右側,代表「虎」。 他們以 mm 號兵營作為分界, 靠左的工兵屬於龍勢力,靠右的工兵屬於虎勢力,而第 mm 號兵營中的工兵很糾結,他們不屬於任何一方。
乙個兵營的氣勢為:該兵營中的工兵數\times× 該兵營到 mm 號兵營的距離;參與遊戲 一方的勢力定義為:屬於這一方所有兵營的氣勢之和。
下面圖 2 為 n = 6,m = 4n=6,m=4 的示例,其中紅色為龍方,黃色為虎方。
遊戲過程中,某一刻天降神兵,共有 s1位工兵突然出現在了 p1號兵營。作為軒軒和凱凱的朋友,你知道如果龍虎雙方氣勢差距太懸殊,軒軒和凱凱就不願意繼續玩下去了。為了讓遊戲繼續,你需要選擇乙個兵營 p2 ,並將你手裡的s2位工兵全部派往 兵營 p2,使得雙方氣勢差距盡可能小。
注意:你手中的工兵落在哪個兵營,就和該兵營中其他工兵有相同的勢力歸屬(如果落在 m 號兵營,則不屬於任何勢力)。
輸入格式
輸入檔案的第一行包含乙個正整數n,代表兵營的數量。
接下來的一行包含 n個正整數,相鄰兩數之間以乙個空格分隔,第 i 個正整數代 表編號為 ii 的兵營中起始時的工兵數量 。
接下來的一行包含四個正整數,相鄰兩數間以乙個空格分隔。
輸出格式
輸出檔案有一行,包含乙個正整數,表示你選擇的兵營編號。如果存在多個編號同時滿足最優,取最小的編號。
#include
#define maxlen 256 * 256 * 2
// - 資料範圍 , 不定
#define maxint 256 * 256 * 256
// - 資料範圍 , 不定
using
namespace std;
long
long
distance
(long
long p,
long
long m)
// - 計算點之間的距離
long
long num[maxlen]=;
// - 數量
long
long momentum[maxlen]=;
// - 氣勢
voidc(
long
long pointer,
long
long m)
// 計算氣勢
intmain()
cin >> m >> p1 >> s1 >> s2;
// ---
// - 將天降神兵存入陣列
if(p1 >
0)num[p1 -1]
+= s1;
else
return0;
// - 將氣勢計算並存入陣列
for(
long
long i =
0; i < n; i ++
)// - 計算龍、虎陣營各自的氣勢
long _min = maxint, ans =0;
for(
long
long i =
0; i < m -
1; i ++
)for
(long
long i = m; i < n; i ++
)// - 遍歷我手中的神兵放置的位置
for(
long
long i =
0; i < n;
++ i)
// - 將陣列返回遍歷前
if(i < m -
1)x -
= s2 *
distance
(i +
1, m)
;else
if(i >= m) k -
= s2 *
distance
(i +
1, m)
; num[i]
-= s2;
}// - 輸出
cout << ans << endl;
return0;
}
龍虎鬥(待填充)
noip2019普及組t2龍虎鬥 這不是篇閱讀題嗎?先看題軒軒和凱凱正在玩一款叫 龍虎鬥 的遊戲,遊戲的棋盤是一條線段,線段上有 個兵營 自左至右編號 1 相鄰編號的兵營之間相隔 1 厘公尺,即棋盤為長度為?1 厘公尺的線段。號兵營裡有 c?位工兵。下面圖 1 為 6 的示例 軒軒在左側,代表 龍 ...
題解 P5016 龍虎鬥
首先祝各位大佬noip有個好成績吧 當時比賽有個大資料,蒟蒻我暴力居然過了,好激動 這題一定要注意開long long 那個大資料就是我開long long才過的 還有剛開始應設定答案為m 見解析 include includeusing namespace std long long f1,f2,...
洛谷P5016龍虎鬥
哎呀,最近有點懈怠了 沒辦法,初三是真的忙 我盡量 哭泣 懂的都懂,這道題是基本的列舉模擬練習 現在讓我們來看看題 題目簡述 軒軒和凱凱正在玩一款叫 龍虎鬥 的遊戲,遊戲的棋盤是一條線段,線段上有 n個兵營 自左至右編號 1 n 相鄰編號的兵營之間相隔 1厘公尺,即棋盤為長度為 n 1 厘公尺的線段...