1276: 求和游戏
1276: 求和游戲
Time Limit: 1 Sec Memory Limit: 12 MB
Submit: 463 Solved: 77
[Submit][Status][Web Board]
Description
小明有n個球排成一行,每個球上有個數字。現在小明選擇兩個球,使這兩個球及其這兩個球之間的數字和最大。如果這個最大的和不為正,則輸出“Game Over”。
Input
第一行輸入T,有T組數據。
每組數據:輸入n(1<n<1000000 ),再輸入n個整數,表示第1個球到第n個球上的數字,每個球上的數字大于-100,小于100。
Output
對于每組數據,輸出最大和或者”Game Over“,占一行。
Sample Input
6 5 3 -5 7 -2 8 3 -1 2 3 4 -1 1 -111 1111 3 -1 -2 -3 3 1 -1 0 6 100 -1 -1 -1 -1 -1 -1Sample Output
13 5 1001 Game Over Game Over 99HINT
Source
SJTU
/*
動態規劃(最大子段和問題)
補一個此類問題鏈接:https://www.luogu.org/problem/P1115
先把這個問題分解為3個數的子問題,
假設這上三個數:a1 a2 a3
要 求解這組數據中 區間的最大和
這組數據有這三種情況:
a1 a2
a2 a3
a1 a2 a3
仔細想想,如何模擬這三種情況:
先設定
sum = a1 + a2;
maxs = sum;
那就成了加上a3之前要不要舍棄a1這問題了,
那什么時候應該舍棄a1?
如果a1是個負值,那肯定要舍棄掉它,如何判斷呢?如果sum > a2 ,a1肯定是個正數,==的話a1=0,舍不舍棄都沒關系,<的話肯定是個負數,所以如果
sum < a2,就sum = sum - a1 + a3(第一個個區間和用maxs存好了),否則sum = sum + a3;
因為后兩種情況只會取其一(而且是更大的那個,取決于a1是否>0)
那么:
ans = max(maxs,sum)
子問題解決了,類推就行
*/
Ac_code:
總結
以上是生活随笔為你收集整理的1276: 求和游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1126: 第二章:我们都有梦想
- 下一篇: LD(Levenshtein dista