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

2022-09-01 15:24:15 字數 2352 閱讀 6400

題意:

又到了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

首先了解離散化的概念:

資料的離散化

有些資料本身很大, 自身無法作為陣列的下標儲存對應的屬性。如果這時只是需要這堆資料的相對屬性, 那麼可以對其進行離散化處理。當資料只與它們之間的相對大小有關,而與具體是多少無關時,可以進行離散化。

例如:91054與52143的逆序對個數相同。

設有4個數:

1234567、123456789、12345678、123456

排序:123456<1234567<12345678<123456789

=>1<2<3<4

那麼這4個數可以表示成:2、4、3、1

#include #include 

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;#define mod 1000000007

#define maxn 100005

#define n 100005

struct

query1

query1(){}

}que[

100005

];map

mp;ll cnt=0

;ll sorted[

100005

];ll num[maxn

<<2

];ll sum[maxn

<<2

];void

pushup(ll rt)

void

update(ll p,ll c,ll l,ll r,ll rt)

ll m=(l+r)/2

;

if(p<=m)

update(p,c,l,m,rt

<<1

);

else

update(p,c,m+1,r,rt<<1|1

); pushup(rt);

}ll query(ll k,ll l,ll r,ll rt)

ll m=(l+r)/2

;

if(num[rt<<1]>=k)

else

}int

main()

sort(sorted,sorted+cnt);

mappm;

int cc=1

;

for(int i=0;i//

離散化處理資料

if(pm[sorted[i]]==0

) }

for(ll i=0;i)

else

}return0;

}

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

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

免費送大家 20 本書

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

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

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