HDU 6464 免費送氣球 (線段樹)

2021-09-12 21:00:58 字數 2180 閱讀 6570

又到了gdut一年一度的程式設計競賽校賽的時間啦。同學們只要參加校賽,並且每解出一道題目就可以免費獲得由acm協會和集訓隊送出的氣球乙個。聽到這個訊息,jmc也想參加免費拿氣球。可是,由於jmc太菜了而被禁止參賽,於是他找到你想讓你幫忙參加比賽,可以通過執行下面的c++程式解決問題後獲得氣球並送給他。jmc保證了下面的程式一定能獲得正確的結果。 

void solve(int q, int type, long long first, long long second)  

} else if (type[i] == 2)  

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

} } 

} 為防止你被jmc的**搞到頭暈目眩,jmc特意給出了問題的文字描述。已知一開始有乙個空序列,接下來有q次操作,每次操作給出type、first和second三個值。當type為1時,意味著該操作屬於第一種操作:往序列尾部新增first個second數。當type為2時,意味著該操作屬於第二種操作:查詢序列中第first小至第second小的數值之和(一共有(second - first + 1)個數被累加),並將結果對1000000007取模後輸出。

input

單組資料 

第一行乙個q(1 <= q <= 1e5),代表q次操作。 

接下來有q行,每行包含三個整數type、first和second;其中1 <= type <= 2。當type等於1時,0 <= first,second < 1e9。當type等於2時,1 <= first <= second,且first和second均不大於目前已新增進序列的數的數量。

output

對於每次操作二,將結果對1000000007取模後輸出。

sample input

6

1 5 1

1 6 3

2 2 5

2 4 8

1 2 2

2 4 8

sample output

4

119

一眼過去線段樹。。。不過比賽的時候因為沒有發現在type = 2的時候first以及second變數是可能大於1e9的(沒給範圍),所以一直在wa。。。很過分。

#includeusing namespace std;

const int maxn = 100010;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

long long sot[maxn]; int cnt = 1;

long long mi[maxn][4];

const int mod = 1000000007;

int hash(long long x)

long long sum[maxn * 4], add[maxn * 4];

void pushup(int rt)

void build(int l, int r, int rt)

int m = (l + r) >> 1;

build(lson); build(rson);

}void update(long long p, long long x, int l, int r, int rt)

int m = (l + r) >> 1;

if (p <= m)update(p, x, lson);

else update(p, x, rson);

pushup(rt);

}long long query(int l, int r, int rt, long long k)

int m = (l + r) >> 1;

long long ans = 0;

if (k > sum[rt << 1])

else

ans %= mod;

return ans;

}int main()

build(1, cnt, 1);

sort(sot + 1, sot + cnt);

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

else

else

long long ans = (bsum - asum + mod) % mod;

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

} }return 0;

}

HDU 6464 免費送氣球(線段樹二分)

題意 又到了gdut一年一度的程式設計競賽校賽的時間啦。同學們只要參加校賽,並且每解出一道題目就可以免費獲得由acm協會和集訓隊送出的氣球乙個。聽到這個訊息,jmc也想參加免費拿氣球。可是,由於jmc太菜了而被禁止參賽,於是他找到你想讓你幫忙參加比賽,可以通過執行下面的c 程式解決問題後獲得氣球並送...

免費送大家 20 本書

感謝大家關注我,我要送書給你們,而且是一言不合就送書!本次送的書是 學習力 共20本。2019年來自職場的扎心三問 有很多要學的內容,但工作忙得根本沒有時間,怎麼辦?工作了很多年,但知識支離破碎得不成體系,怎麼辦?想轉行,但又缺少工作必需的知識和技能,怎麼辦?其實,這一切只是因為你用的方法不適合你,...

《大話重構》免費送書活動開始啦

我的新書 大話重構 免費送書活動開始啦!參與方式 一.進入該活動並免費試讀本書 url 二.在該活動中完整回答以下四個問題的讀者可獲得 機會 1 你自認為你的程式設計水平是 a初級 b中級 c高階 d不好說,但別人都叫我大師 2 你在平常工作中是否進行重構 a經常 b有時 c幾乎從不 3 這本書從目...