ZJYYCOJ 最大奇數和

2021-10-03 22:56:32 字數 1379 閱讀 3240

可模擬可貪心

首先,我們能想到,既然要和為奇數,那麼必然是奇數個奇數相加,偶數隨意!(qaq… 這點比賽考慮到位了!

其次必然要剪枝一下,或者再貪一下,(這個,比賽的時候我沒考慮到位,超時n發,原因是我做了重複的相加操作,這裡我沒用字首和優化一下即可

然後我們可以再貪一下,標記下,偶數哪一段從**開始就變負數了,對於負數我們可以直接拋棄掉!(當然奇數也可以這樣貪一下,但是可能還得考慮再仔細一點!

到此為止,貪的也差不多了,優化的也差不多了!剛好夠ac(hahahaha

對了還有最後一點,這題寫了最多可以取k個,不是就取k個,這個我到比賽結束都沒發現這個問題(qaq…

#include

using

namespace std;

const

int maxn =

100005

;const

long

long inf =

1e16+7

;bool

cmp(

long

long a,

long

long b)

typedef

long

long ll;

ll anum[maxn]

, bnum[maxn]

;int

main()

sort

(anum, anum + aa, cmp)

;sort

(bnum, bnum + bb, cmp)

;int tmpa = aa, tmpb = bb;

// 求一下字首和

for(

int i =

1; i < aa; i++

)// 這裡我們貪一下,出現負數的直接丟了

for(

int i =

1; i < bb; i++

) bnum[i]

+= bnum[i -1]

;}// 如果第乙個偶數就為負數,那麼偶數就沒必要加了

if(bnum[0]

<

0) tmpb =0;

long

long ans = anum[0]

;for

(int i =

1; i <= m && i <= tmpa; i +=2

)else

}else

ans =

max(ans, tmp);}

cout << ans << endl;

}return0;

}

HAUTOJ奇數最大子段和

題目描述 乙個大小為n的陣列a1到an 10 4 ai 10 4 請你找出乙個連續子段,使子段長度為奇數,且子段和最大。輸入 第一行為t 1 t 5 代表資料組數。之後每組資料,第一行為n 1 n 10 5 代表陣列長度。之後一行n個數,代表a1到an。輸出 每組資料輸出一行,表示滿足要求的子段和最...

連續奇數和

題目 小明看到一本書上寫著 任何數字的立方都可以表示為連續奇數的和。比如 2 3 8 3 5 3 3 27 7 9 11 4 3 64 1 3 15 copy 雖然他沒有想出怎麼證明,但他想通過計算機進行驗證。請你幫助小明寫出 111 的立方之連續奇數和表示法的起始數字。如果有多個表示方案,選擇起始...

藍橋 連續奇數和

小明看到一本書上寫著 任何數字的立方都可以表示為連續奇數的和。比如 2 3 8 3 5 3 3 27 7 9 11 4 3 64 1 3 15雖然他沒有想出怎麼證明,但他想通過計算機進行驗證。請你幫助小明寫出 111 的立方之連續奇數和表示法的起始數字。如果有多個表示方案,選擇起始數字小的方案。請嚴...