題意:
又到了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
6sample output1 5 1
1 6 3
2 2 5
2 4 8
1 2 2
2 4 8
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 這本書從目...