陽(yáng)后第5天,基本康復(fù),回歸正常作息。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到雨湖網(wǎng)站設(shè)計(jì)與雨湖網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋雨湖地區(qū)。1247. 后綴表達(dá)式 - AcWing題庫(kù)
給定?NN?個(gè)加號(hào)、MM?個(gè)減號(hào)以及?N+M+1N+M+1?個(gè)整數(shù)?A1,A2,???,AN+M+1A1,A2,···,AN+M+1,小明想知道在所有由這?NN?個(gè)加號(hào)、MM?個(gè)減號(hào)以及?N+M+1N+M+1?個(gè)整數(shù)湊出的合法的后綴表達(dá)式中,結(jié)果大的是哪一個(gè)?
請(qǐng)你輸出這個(gè)大的結(jié)果。
例如使用?123+?123+?,則?“23+1?”“23+1?”?這個(gè)后綴表達(dá)式結(jié)果是?44,是大的。
輸入格式
第一行包含兩個(gè)整數(shù)?NN?和?MM。
第二行包含?N+M+1N+M+1?個(gè)整數(shù)?A1,A2,???,AN+M+1A1,A2,···,AN+M+1。
輸出格式
輸出一個(gè)整數(shù),代表答案。
數(shù)據(jù)范圍
0≤N,M≤1050≤N,M≤105,
?109≤Ai≤109?109≤Ai≤109
輸入樣例:
1 1
1 2 3
輸出樣例:
4
這道貪心題其實(shí)我一開(kāi)始的想法是這樣的:n個(gè)+,m個(gè) - ,那就用大的數(shù)作為基數(shù),降序排序后加上前n個(gè),減去后m個(gè)即可??墒窍敕ㄟ€是太簡(jiǎn)單了wrong answer。看了題解以后才明白過(guò)來(lái):根據(jù)后綴表達(dá)式的特性,顯然我們可以將多個(gè) - 變成一個(gè) - 和多個(gè)+(將后綴表達(dá)式表示成二叉樹(shù)更好理解一些,可以參考其他佬寫(xiě)的這篇文章二叉樹(shù)應(yīng)用——后綴表達(dá)式構(gòu)建表達(dá)式樹(shù)_趙同學(xué)的博客-博客_后綴表達(dá)式轉(zhuǎn)二叉樹(shù))
題目要求求出后綴表達(dá)式的大值,因此,當(dāng)m為0時(shí),直接加和即可;m不為0時(shí),ans = f[max] - f[min],ans += abs(f[i])即可。
#include#include
#includeusing namespace std;
typedef long long LL;
const int N = 2e5+10;
int f[N];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<=n+m;i++) scanf("%d",&f[i]);
LL ans = 0;
if(!m) {
for(int i=0;i<=n+m;i++) ans+=f[i];
} else{
sort(f,f+n+m+1,greater());
ans = f[0] - f[n+m];
for(int i=1;i你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:題:后綴表達(dá)式-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/gjjcg.html