sjtu oj 1006 求和遊戲

2022-06-12 02:00:14 字數 803 閱讀 1630

考慮到資料量,不可能建立等長的陣列(也沒有意義)

需要做的只是記錄最小累計值(minn),並且每讀入乙個值(tem)就將目前的累計值(now)與最小值比較,更小則替代,答案(ans)取當前累計值與最小值的差值

考慮到題目要求,ans小於等於0時輸出game over

注意,以上變數都為long long(其實沒有必要,才2e9,還在int範圍內

注意*2,答案至少需要兩個元素,實現就是改變更新minn和ans的順序,即使用前乙個值的minn,從而保證至少兩個

(但是我還是錯的qwq,並且是1,3兩個資料點。。。)

(10分鐘後的)update:我搞出來了!!

我是個憨憨,前乙個值的minn還是只有乙個啊啊啊啊啊啊啊啊,心痛

正確**:

#includeusing

namespace

std;

intn;

inttem,pre,now,ans;

intmain()

if(ans>0) cout

game over";

return0;

}

錯誤**(1,3×)

#includeusing

namespace

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...