CodeForces 165C 字串(暴力)

2021-07-14 22:36:49 字數 684 閱讀 4738

題意:

給乙個數字 k (k<1e6)和乙個長度不超過(1e6) 的字串 s ,這個字串只是由0和1組成,問這個字串能分成幾個滿足各字元的和等於

k 的子串?

輸入:

1       1010

2       01010

100   01010

輸出: 6

4 0

分析:直接暴力,分類討論,情況一:1的數量小於k,輸出0。情況二:k=0,這時只需要統計0的個數即可,由此找到規律,能組成 的

子串的數目=((0的個數+1)*0的個數 ) / 2。情況三:也是最重要最難的,找到滿足這樣規則的最短的子串,然後記錄該子串的

兩個端點的位置,從開頭到該字串的末端可以構成的子串數量=左端點 * 右端點,最後全部遍歷一遍字串就可以了。

**:

#include using namespace std;

const int maxn=1000000+10;

char s[maxn];

int main()

pre=i;}}

if(cur==k)

printf("%lld\n",sum2);

return 0;

}

小結:這個用暴力解決的題目,學的就是一種思路,清晰的思路。

Codeforces 587C 樹上倍增

題意 求樹上兩點路徑中的前 a 10 小的點權值。思路 類似lca倍增演算法來儲存 i 2 j 路上的 前 10 小個 的點權值。然後要寫乙個權值合併 具體求 u v 的話,就是先分別計算 和 減1是lca會重疊 然後再合併,輸出答案。include include include include ...

Codeforces 976C 題解報告

對資料進行排序 1 按左邊的數從小到大排 2 若左邊的數相等,則按右邊的數從大到小排。排序之後,若乙個數的右邊的數小於等於上乙個數的右邊的數,則這兩個數必然符合題意。比如2 13 2 12 1 11排序之後,變為 1 11 2 13 2 12因為12 13,則有 2,12 被包含在它的上乙個數 2,...

CodeForces 948C 解題報告

題目鏈結 這道題看出來了是一道stl題,本來一開始用佇列去做,結果tle,在這裡先給出tle include using namespace std typedef long long ll const int maxn 1e5 10 int n,v maxn t maxn int main els...