題解 優先佇列優化貪心 CF2C

2022-03-06 13:16:06 字數 663 閱讀 1109

因為處理這個問號的時候具有不確定性,所以我們乾脆把所有的問號在一開始的時候全部初始化成右括號,這個時候再來看如果右括號多了,就可以把一些問號變成的右括號轉換成左括號,這個操作的代價就是\(a[i] - b[i]\),\(a[i],b[i]\)分別表示把第\(i\)個括號換成左括號和右括號的代價,那麼就把所有的問號都用這種形式放到小根堆裡即可。

這樣做的乙個好處就是不需要考慮乙個括號是變成左括號還是右括號,轉而只要考慮是否變成左括號,只需要在計算權值的時候稍微處理一下即可

#include using namespace std;

priority_queue < pair < int , int > > q;//小根堆

int a[50010],b[50010];

string s;

string ss;

int main()

}if (s[0] == ')' || s[s.length() - 1] == '(' || abs(l - r) > cnt)

}if (l != r)

if (ss[ss.length() - 1] != ')')

for (int i = 0;i < s.length();i++)

}cout

}

優先佇列貪心

最近做了幾個用優先佇列進行貪心的題目,這裡寫下來,以免忘了。1 cf 799 b 每次選最便宜的衣服,沒什麼好說的,一發過 include include include include include define n 6005 define inf 0x3f3f3f3f include incl...

貪心加優先佇列

消滅兔子 李陶冶 命題人 基準時間限制 1 秒 空間限制 131072 kb 分值 40 有n只兔子,每只有乙個血量b i 需要用箭殺死免子。有m種不同型別的箭可以選擇,每種箭對兔子的傷害值分別為d i 為p i 1 i m 假設每種箭只能使用一次,每只免子也只能被射一次,計算要消滅地圖上的所有兔子...

Meteor Flow(貪心 優先佇列)

meteor flow 貪心 優先佇列 ac code 1 既然只要發射一次,就可以打掉,那麼就要打掉那個耗費經歷最多的,以保留更多的精力 所以用優先佇列,先彈出耗費經歷最多的 2 其次,只要有能力打就先不發射 所以先入棧 34 include 5 include 6 include 7 inclu...