藍橋杯 2019初賽 字尾表示式 思維

2021-10-09 18:28:44 字數 999 閱讀 5512

給定n 個加號、m 個減號以及n + m + 1 個整數a1,a2,…,an+m+1

小明想知道在所有由這n 個加號、m 個減號以及n + m +1 個整數湊出的合法的字尾表示式中,結果最大的是哪乙個?

請你輸出這個最大的結果。

例如使用1 2 3 + -,則「2 3 + 1 -」 這個字尾表示式結果是4,是最大的。

第一行包含兩個整數n 和m。

第二行包含n + m + 1 個整數a1,a2,…,an+m+1

0<=n,m<=100000,-109<=ai<=109

輸出乙個整數,代表答案。

樣例輸入

1 11 2 3

樣例輸出

4

【題解】:

1.作為倒數第二題,我開始乍一看以為排個序從大的開始加,然後剪掉小的就可以了,結果告訴我事情沒有那麼簡單。

2.因為是逆波蘭式所以,有加括號的效果,而且,可以加乙個很大的括號,除了乙個無法變正,其他負號都可以變正。

3.但是事情還是麼有那麼簡單,因為有負數。

(1)如果負數的個數等於總的個數,即所有的數都是負數,那麼,負負得正,結果為所有負數的絕對值之和

(2)如果負數的個數小於總個數,一定有乙個數不能轉為正式,那麼就得把絕對值大得負數轉為正數。

4.注意:m,n都是0~100000之間,那麼數字得個數是200000,陣列不要開小了

#include

#define ll long long

using

namespace std;

int a[

200005];

intmain()

sort

(a,a+all);if

(m)//有負號

else

ans-=2

*a[0]*

1ll;

} cout<}

藍橋杯2019初賽 字尾表示式

藍橋杯2019初賽 字尾表示式 時間限制 1 sec 記憶體限制 256 mb 題目描述 給定n 個加號 m 個減號以及n m 1 個整數a1,a2,an m 1 小明想知道在所有由這n 個加號 m 個減號以及n m 1 個整數湊出的合法的字尾表示式中,結果最大的是哪乙個?請你輸出這個最大的結果。例...

2019藍橋杯初賽 字尾表示式

藍橋賽前練練手 字尾表示式可以模擬任意加括號的結果 所以相當於給出n個加號,m個減號,n m 1個數,用這些任意組成乙個式子,使結果最大 用大寫字母表示正數,小寫字母表示負數 最優的情況是n m 1個數中,有n 1個正數,有m個非正數 即構成a b c d a b c形式 結果就是絕對值之和 在此基...

1467 藍橋杯2019初賽 字尾表示式

題目 給定n 個加號 m 個減號以及n m 1 個整數a1,a2,an m 1。小明想知道在所有由這n 個加號 m 個減號以及n m 1個整數湊出的合法的字尾表示式中,結果最大的是哪乙個?請你輸出這個最大的結果。例如使用1 2 3 則 2 3 1 這個字尾表示式結果是4,是最大的。思路 讀完題後,覺...