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個...