TJOI2019 平衡樹 甲苯先生的滾榜

2021-09-26 21:54:30 字數 1953 閱讀 4777

【描述】

甲苯先生在製作乙個online judge,他發現做比賽的人們很關心自己的排名(顯而易見),在acm賽制的比賽中,如果通過題目數量不相等,則通過題目數量多的人排名更靠前,如果通過題目數量相等,則罰時更少的人排名更高。甲苯先生想讓大家幫忙設計乙個程式,每次有人通過之後,就告訴他排名在他的前面有多少人。(不包括和他罰時題數都相同的同學)

【輸入】

第一行輸入乙個整數t表示樣例數。對於每乙個樣例:輸入三個整數m, n, seed。m表示參賽總人數(編號1−m),n表示一共有n次accept(假設accept已經去重,即不存在相同人的相同題目提交)。seed表示生成資料的種子。

接下來要求同學們使用之下的函式生成資料

typedef

unsigned

int ui;

ui randnum

(ui& seed, ui last,

const ui m)

(last為上一次輸出的結果,在沒有輸出結果時last=7)

要求每次生成兩個資料ria,rib 表示ria的人accept了一道題目,他的罰時為rib。(也就是說ria的題目數量+1,罰時長度+rib)。

要求一共生成n組資料,代表一共有n次提交

對於所有資料,保證罰時總和不超過1500000

輸出每次提交輸出一行整數,表示ria在ac後比ria成績高的有多少選手。

【樣例輸入】

17 3 1

【樣例輸出】01

0貌似沒什麼好講的,這就是乙個模板,用平衡樹維護乙個二元組。用pair或者結構體重載運算子即可。值得一提的是,操作過程中,我們不關心節點與人的對應,對於若干個相同的節點,我們任意取出乙個進行操作即可。也就是說,平衡樹並不是維護每個人的資訊,只是維護這樣的一種局面。另外,如果沒有o2,這道題有點卡常,可能需要對讀入的函式進行一些喪心病狂 的修改。最初建樹時注意清空。對於這種多組資料題:陣列不清空,爆零兩行淚 。

#include

#define re register

using

namespace std;

const

int n=

1e5+5;

typedef

unsigned

int ui;

int a,b,l,r,p,n,m;

inline ui red()

struct node

}val[n]

,w[n]

;int ch[n][2

],siz[n]

,pri[n]

,rt;

inline

void

pushup

(const

int&u)

intmerge

(int x,

int y)

void

split

(int u,

const node&v,

int&x,

int&y)

ui last=

7,seed;

inline ui ran()

intbuild

(int l,

int r)

int pre=0;

inline

void

del(

const node&v)

,p,r)

;pre=p;

p=merge

(ch[p][0

],ch[p][1

]); rt=

merge

(l,merge

(p,r));

}inline

intadd

(const node&v)

inline

void

print

(ui x)

intmain()

}}

TJOI2019 甲苯先生的線段樹

tjoi2019 甲苯先生的線段樹 首先原題 cf750g new year and binary tree paths 方法 滿二叉樹,鏈長為logn 考慮列舉lca為x,兩個鏈長h1,h2,發現x是唯一確定的!找到這個x,s減去都走左兒子的貢獻,再調整出右兒子 2 n 1 2 n,變成每一位的0...

TJOI2019 甲苯先生的線段樹(數字DP)

tjoi2019難一點的就只有這道d2t3了,前面五道我共計花了三個小時,這一道花了將近兩個小時。五個小時ak兩天tjoi不是夢 但是說實話這道題並沒有什麼水平,沒考察什麼思維方面的東西,涉及到的性質也極其偏門,天津就靠這個來選拔省隊?怕不是反向選拔,反正天津今年也一塊金牌也沒有,這個鍋省選和省選出...

TJOI2019 甲苯先生和大中鋒的字串

有個叫asuldb的神仙來嘲諷我 說這題sam水題,而且sa過不了 然後我就用sa過了 顯然是乙個height陣列上長為k的滑塊,判一下兩邊,差分一下就可以了 include cstdio include cstring include iostream include algorithm usin...