差分 牛客 HJ澆花

2021-09-05 19:06:50 字數 1280 閱讀 7947

補一道差分基礎題

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

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

差分思想

#include#include#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

const int maxn=1000000;

int l[maxn];

int r[maxn];

int a[maxn];

int sum[maxn];

mapma;

int main()

for(int i=minn;i<=maxx;i++)

for(int i=minn;i<=maxx;i++)

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

cout<

return 0;

}

牛客HJ澆花。

我也不知道這是什麼型別的題,算是簡單模擬吧。但是有個方法很讚。開兩個陣列,乙個模擬花,乙個記錄不同澆花次數花的數量 要找澆水的次數,那麼記每次澆水的開頭和結尾就行了,a b 那麼f a f b 1 然後0 n迴圈 剪枝的話,可以找到最小澆花的數min和最大澆花的數max。找到當前的澆水次數,t f ...

牛客華為機試HJ1

原題傳送門 1 思路分析 思路1 用空格去切,取切完的最後乙個字串長度即可。思路2 從後往前遍歷,直到遇到空格退出迴圈,設找到的第1個空白字元下標為start,s.length 1 start即為所求。示例 遍歷可得start 5,s.length 1 start 14 1 5 8。2 實現 j a...

牛客華為機試HJ39

原題傳送門 1 思路 把ip全轉換為32bit 字串,模擬與運算。2 實現 import sys if sys.platform linux file in open input hj39.txt sys.stdin file in 若ip位址或子網掩碼格式非法則輸出1,若ip1與ip2屬於同一子網...