CodeForces 816B(區間計數)

2021-08-04 22:33:36 字數 775 閱讀 3287

codeforces - 816b

題意:給出n個區間和乙個k值,再給出q次詢問,每次詢問給出乙個區間,要求這個區間中的數在開始的n區間中出現次數不少於k次的數目。

解法:將n個區間的每個數每出現一次就加一,最後統計q詢問的區間中不小於k的數的個數。寫這題主要是想講乙個常用的區間更新的方法,其實這題也可以用線段數或樹狀陣列寫,但在這裡就不講了。

操作:

1.再輸入n個區間[l, r]時,每次都將初始化全為0的陣列a的l加一,將r+1減一。

2.輸入完後遍歷一遍陣列,a[i + 1] += a[i]。

解釋:l加一是指從l處開始後面的每乙個數都要加一,r+1減一是指從r+1處開始每個數都不用再加一了。減一消除了加一對區間後面的影響。

#include using namespace std;

const int maxn = 2e5 + 5;

int n, k, q, l, r, a, b;

int cnt[maxn];

int sum[maxn];

int main()

for(int i = 1; i < maxn; i++)

while(q--)

return 0;

}

CODEFORCES 535B 解題報告

仍然是水題,但是還是有可以說的地方。主要思路就是dfs可重排列。4,7組成的幸運數字,在n位數字的構造方式有2 n種,而資料是最多9位,則列舉只有512種,n 2的複雜度足矣。只列舉相應位數的4 7排列,前面的個數用2 n累加。只要遵循先選4再選7即可構造字典順序,然後查詢相應數。以下是 可直接ac...

Codeforces 965B 題解報告

當k 1時,取第乙個 的座標即可 當k 1時,需要求出每乙個點在上下左右四個方向所能到達的最遠處,記為up,down,left,right,再取上下方向和左右方向的和的最大值,即 max 0,up down k max 0,left right k n,k map int,input split a...

Codeforces 980B 題解報告

一 本題考察對稱性 n 5,k 4時,以下兩種方案符合題意 以下一種方案不符合題。因為這種方案,從 1,1 到 5,5 有2條最短距離,從 4,1 到 1,5 有4條最短距離。二 考慮到四個邊不能放旅館,所以最多可放2 n 2 個旅館。題目中k的取值範圍為 0,2 n 2 結果必然為 yes 不可能...