西南民族大學第十屆校賽(同步賽)M(差分)

2021-09-08 08:57:04 字數 1443 閱讀 2780

hj養了很多花(99999999999999999999999999999999999盆),並且喜歡把它們排成一排,編號0~99999999999999999999999999999999998,每天hj都會給他的花澆水,但是他很奇怪,他會澆n(1 <= n <= 2 * 105)次水,每次都會選擇乙個區間[l, r],(0 <= l <= r <= 106),表示對區間[l, r]的花都澆一次水。現在問你,通過這些操作之後,被澆了i(1 <= i <= n)次水的花的盆數。

輸入:第一行乙個n,表示hj的操作次數,接下來的n行,表示每一次選擇的澆水區間。
輸出:輸出n個數字cnt1, cnt2……cntn,(用空格隔開)cnti表示被澆了i次水的花的盆數。
示例1

複製

3

0 31 3

3 8

複製

6 2 1
示例2

複製

3

1 32 4

5 7

複製

5 2 0
對於樣例1的圖形解釋

被澆了1次的有:0, 4, 5, 6, 7, 8, cnt1 = 6

被澆了2次的有:1, 2.           cnt2 = 2

被澆了3次的有: 3 .            cnt3 = 3

思路:這個就很好玩啦。

老忘差分咋寫 , 這回得記下來。

先定義倆陣列 ,分別為a[100] , b[100]。

0 ---- 3       1 -----3       3------ 8

樣例為這幾個

a[0] += 1--------a[3+1]  -=  1;

a[1] += 1--------a[3+1]  -=  1;

a[3] += 1--------a[8+1]  -=  1;

b[i] = b[i-1] + a[i] ;

這樣我們會奇蹟般地發現 b[i]的值就是這個點所被覆蓋的數。

這裡要注意記錄他的最大值與最小值。

**:

#include using namespace std;

const int maxn = 1e6+8;

int a[maxn] , b[maxn] , vis[maxn] , l[maxn] , r[maxn] , d[maxn];

int main()

b[0] = a[0];

vis[b[0]]++;

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

//cout << b[i] << " ";

} for(int i = 1 ; i <= n ; i++)

return 0;

}

西南民族大學第十屆校賽 題解

background 正值元旦,這一腳剛邁出校園,便又開始了比賽,得一地,習之,此篇僅用於交流使用。題號 題目思路 adreamstart的催促 計算第 i 個數的第 i 次方 快速冪 btrdd got lost again ccompany dfs d a b c 判斷是否是三角環 開個陣列就行...

西南民族大學第十屆校賽(同步賽解題報告)

a.dreamstart的催促 題解 快速冪注意每個數先取一次模,否則乘法溢位 b.trdd got lost again 題解 先把城市地圖簡單處理一下,然後bfs直接搜 include include include include using namespace std const int n...

西南民族大學第十屆校賽(同步賽)E(模擬)

siry特別喜歡數學,在他很小的時候他就對數字特別感興趣,他喜歡念數字。具體唸法是這樣的 給你乙個數字,依次唸出每個數字有幾個相鄰 siry會大聲說出a個b,c個d.組合起來形成乙個新的數字。如 2331的唸法就是1個2,2個3,1個1,形成的新數字就是122311。再念一次就是1個1,2個2,1個...