題目描述
給定乙個長度為n
nn的序列a
aa,對於每乙個數都可選或不選,把選出的數有序組成乙個新的序列b
bb,使b
bb序列的「和諧數」最大。
乙個序列的和諧數如下定義:對於位置i
ii,如果第奇數次選的則加上b
ib_i
bi,偶數次選的則減去b
ib_i
bi注意:新的序列b
bb必須是從左到右依次在a
aa序列選擇的,即不能打亂順序。
輸入
輸入的第一行是乙個n
nn,第二行為n
nn個數,即序列a
aa輸出
輸出一行乙個整數,即表示最大的和諧數
樣例輸入5
1 2 3 4 5
sample input2
61 3 5 4 6 8
樣例輸出
sample output2
9資料範圍限制
對於20%的資料,1
<=n
<=20
1<=n<=20
1<=n
<=2
0對於50%的資料,1
<=n
<
=1000
1<=n<=1000
1<=n
<=1
000對於100%的資料,1
<=n
<
=10000000,1
<=a
i<
=100
1<=n<=10000000,1<=ai<=100
1<=n
<=1
0000
000,
1<=a
i<=1
00 思路
考試的時候冥思苦想,就是t。。(說髒話好像要罰錢來著) d算不出來第乙個樣例。後來gjy巨佬告訴我只選最後乙個。。。c
設f [i
][0]
f[i][0]
f[i][0
]為第i
ii個數偶數的時候選的最優解
f [i
][1]
f[i][1]
f[i][1
]為第i
ii個數奇數的時候選的最優解
這麼簡單 (心虛) 的轉移方程自己列一列板栗就可以了
因為f [i
]f[i]
f[i]
只跟f [i
−1
]f[i-1]
f[i−1]
有關,所以我們可以用滾動陣列。但是。。。我不會,所以我用了一種簡單粗暴的方法
#include
#include
using namespace std;
long long f1,f0,x1,x0,n;
int main()
printf
("%lld"
,max
(f1,f0));
}
2017 7 7普及 終極數
題目大意 解題思路 題目描述 給定乙個長度為n的序列a,試求出對於序列a的每乙個字首的終極數x,使得 最小,試求出終極數t 如若有多個終極數t,只需輸出最小的那個 第一行乙個整數n,第二行n個整數,中間用空格隔開 輸出一行乙個整數,即表示終極數t 由於題目較為苦澀難懂,先看一下 解題思路 其實就是求...
數學 2017 7 7普及 串
題目描述 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。輸入 乙個字串,只包含01,長度不超過1000000。輸出 一行乙個整數,最長的0與1的個數相等的子串的長度。樣例輸入 1011 樣例輸出 2資料範圍限制 30 的資料 串的長度 20 思路題面看著這麼舒服,結果難的跟...
JZOJ Day 2 NOIP普及模擬 和諧數
題目描述 給定乙個長度為n的序列a,對於每乙個數都可選或不選,把選出的數有序組成乙個新的序列b,使b序列的 和諧數 最大。乙個序列的和諧數如下定義 對於位置i,如果第奇數次選的則加上bi,偶數次選的則減去bi 注意 新的序列b必須是從左到右依次在a序列選擇的,即不能打亂順序。輸入輸入的第一行是乙個n...