考慮到資料量,不可能建立等長的陣列(也沒有意義)
需要做的只是記錄最小累計值(minn),並且每讀入乙個值(tem)就將目前的累計值(now)與最小值比較,更小則替代,答案(ans)取當前累計值與最小值的差值
考慮到題目要求,ans小於等於0時輸出game over
注意,以上變數都為long long(其實沒有必要,才2e9,還在int範圍內
注意*2,答案至少需要兩個元素,實現就是改變更新minn和ans的順序,即使用前乙個值的minn,從而保證至少兩個
(但是我還是錯的qwq,並且是1,3兩個資料點。。。)
(10分鐘後的)update:我搞出來了!!
我是個憨憨,前乙個值的minn還是只有乙個啊啊啊啊啊啊啊啊,心痛
正確**:
#includeusingnamespace
std;
intn;
inttem,pre,now,ans;
intmain()
if(ans>0) cout
game over";
return0;
}
錯誤**(1,3×)
#includeusingnamespace
std;
intn,flag;
inttem,minn,now,ans;
intmain()
if(ans<=0) puts("
game over");
else cout
}
SJTU OJ 1006 求和遊戲
description 石柱上有一排石頭鍵盤,每個鍵上有乙個整數。請你在鍵盤上選擇兩個鍵,使這兩個鍵及其之間的鍵上的數字和最大。如果這個最大的和不為正,則輸出 game over input format 第1行 鍵的個數n。第2.n 1行 鍵上的數字整數 ai。100 ai 10 對於70 的資料...
1006 求和遊戲
石柱上有一排石頭鍵盤,每個鍵上有乙個整數。請你在鍵盤上選擇兩個鍵,使這兩個鍵及其之間的鍵上的數字和最大。如果這個最大的和不為正,則輸出 game over 第1行 鍵的個數n。第2.n 1行 鍵上的數字整數 ai ai。100 ai 100 100 ai 100 對於70 的資料,2 n 1,000...
1006 求和遊戲
這道題目和最大連續子串行不同的是,要求子串行至少包含兩個元素。用 sum i 表示sigma,即字首和 用 m i min m 0 0 這樣 sum i m i 2 就表示以 i 結尾的至少包含兩個元素的最大連續子串行和,所以問題可以表示為求 ans min 1 include 2 3 define...