CodeForces 5C(思維 括號匹配)

2022-06-12 13:24:06 字數 822 閱讀 1308

給出乙個括號序列,求出最長合法子串和它的數量。 合法的定義:這個序列中左右括號匹配。

這個題和普通的括號匹配有區別,並行的括號匹配也可以存在,比如()()(),這種答案就是長度為6。

用乙個陣列記錄每個位置是否匹配,用棧模擬,每遇到乙個'('直接將下標入棧,遇到')'就看棧裡面有沒有'(',如果有就將這個位置和他匹配的位置(棧頂)置為10然後pop,沒有就繼續。

然後這個陣列就是一片01了,找最長連續1即可,因為1表示這個位置可以匹配。

#include using namespace std;

#define inf 0x3f3f3f3f

#define ll long long

const int n = 1e6 + 5;

const int mod = 1e9 + 7;

const double eps = 1e-8;

const double pi = acos(-1.0);

#define lowbit(x) (x & (-x))

int a[n];

int main()

}int mx = 0, cnt = 0;

mapmp;

for (int i = 0; i < l; i++)

else

cnt = 0;}}

if (cnt >= mx)

mx = cnt, mp[mx]++;

if (mx == 0)

mp[mx] = 1;

cout << mx << " " << mp[mx] << endl;

return 0;

}

codeforces,1215C(模擬 思維)

題意 給定兩個只包含 a b 的長度相同字串s,t,要你將他們變成一模一樣的串,你每次可以將s中的乙個字元與t中的乙個字元交換,最後輸出次數並輸出步驟。首先明確,相同的部分是不用動的,我們只需動不同的部分。其次,我們分析一下s i t i 的情況,無非就是 s i a t i b 或 s i b t...

CodeForces 808C 貪心 思維

給定你n個酒杯的大小,和你一大瓶酒 容量m,要求1 每個杯至少放一半,奇數向上取整 2 容量大的杯子放的酒要比容量小的多 3 每個杯子裡都要有,並且是整數性質。是周賽的題,開始時交了十幾遍,一直錯在第8個樣例。比賽完又自己開codeforce交了十幾次。終於發現了錯誤的原因竟然是兩行的 的順序顛倒了...

CodeForces 1169C(二分 思維)

codeforces 1169c 1 思路 每次可以選取任意幾個數字進行 ai 1 m的操作,所以最多m次讓序列變為非遞減序列。讓所有的元素值保持盡可能的小,能使最終的運算元最小。所以可以二分查詢需要進行修改的次數tim。2 include include include includeusing ...