題意:給出一些字串,重新組合,使括號的匹配數量最多
這道題場上沒能出,當時看了一眼,關於括號的,以為是個dp,就沒有再去做這道題。
這道題事實上是個貪心,先把已經匹配好的括號數量統計出來。剩下的括號往兩邊堆,右括號往左邊堆,左括號往右邊堆。然後就是排序。
左括號比右括號多的這種情況肯定要排在右括號比左括號多的前面。
左括號都比右括號多時,就按照右括號少的在前面
右括號都比左括號多時,就按照左括號多的在前面
仔細想一下,確實是這樣才能使匹配數量最大化。
看dls直播講題的時候有人說流水排程問題,仔細想一下,好像確實是這樣。演算法課沒有好好學qaq,學習了一下dls的**
#include #include #include #include #include #include using namespace std;
const int maxn = 1e5+10;
struct node
else
a[i].r++;}}
}sort(a+1,a+n+1);
int now = 0;
int ans = 0;
for(int i = 1; i <= n; i++)
printf("%d\n",ans*2);
}return 0;
}
HDU6299(2018多校第一場)
bryce1010模板 兩個字串的排序可以分成四種情況 1 str1左少右多 vs str2 左多右少 str2排在str1前面 2 str1 左多右少 vs str2 左少右多 str1排在str2前面 3 str1 左少右多 vs str2 左少右多 按左括號的數量排序 4 其他情況按右括號的數...
2019HDU多校第一場
1002.operation 傳送 題意 給定乙個長度為 n 的數列,m 次操作,每次操作如下 0 l r 查詢區間 l,r 內若干個數的最大異或和。1 x 給數列末尾新增乙個數 x 資料範圍 1 n,m 5e5,1 a i 2 分析 開始直接考慮用線段樹維護區間線性基的並,然後每次查詢求區間線性基...
2013多校第一場
c 找規律的題。主要是把題目裡的加法與去火柴的模型聯絡起來,然後利用排列組合的原理找公式。小結 我一開始一直在研究每個數和每個數出現的次數,以及題目給的f n 2 n 1 有啥關係,最後也沒研究個啥結論,看題解才知道的。include include include include include ...