CDOJ1357 柱爺與最大區間和

2021-07-12 02:56:21 字數 654 閱讀 1184

傳送門:

分析:首先,我們需要知道怎麼求一段最大區間和。從左往右掃的時候,用pre記錄當前的最大值,f[i]表示從最左端到i這個區間上的最大和。當掃到i時,如果pre已經小於0,那麼直接將a[i]賦值給pre,否則加上a[i],然後f[i]=max(f[i-1], pre)。時間複雜度為o(n)。求兩段的話,再倒著在掃一遍就行,接著列舉分界點,最終答案為ans = max(anx, f[k-1]+g[k+1])。

**:

#include #include #include #include using namespace std;

const int inf = 1<<29;

const int maxn = 500000+5;

int f[maxn], g[maxn];

int a[maxn];

int main()

}int last = -inf;

g[n] = -inf;

for(int i = n-1; i >= 2; i--)

int ans = -inf;

for(int k = 1; k < n-1; k++)

printf("%d\n", ans);

}return 0;

}

CDOJ 點球大戰 penalty

演算法 模擬 考點 字串的處理 首先是要讀入一整行可以使用getline cin,str 然後還要注意到 每組資料第一行為n 整數 cin n後若getline 會讀入換行符 所以在cin n 後需要先cin.get 然後再 getline cin,str 然後注意到此題只能從後判斷倒數的兩個單詞像...

CDOJ 844 程式設計競賽

你動規無力,圖論不穩,資料結構鬆散,貪心遲鈍,沒一樣像樣的,就你還想和我同台競技,做你的美夢!今天這場比賽,就是要讓你知道你是多麼 的無能!不訓練,無以為戰。有 n 項能力是acm競賽要求的,訓練則能提公升,忽略則會荒廢。這m 天,你能做到如何。第一行兩個整數 n m 分別表示有 n 項能力要求,共...

CDOJ 木桿上的螞蟻

description 在一根細木桿上,有一些速度相同螞蟻,它們有的往左走,有的往右走,木桿很細,只允許乙隻螞蟻通過,所以當兩隻螞蟻碰頭的時候,它們會掉頭繼續前進,直到走出邊界,掉下木桿。已知木桿的長度和每只螞蟻的名字 位置和初始方向,問依次掉下木桿的螞蟻花費的時間以及它的名字。input 輸入包含...