2017 山東二輪集訓 Day3 第一題

2021-09-01 05:57:59 字數 1229 閱讀 2102

貪心,每人每次分給的一定是所需代價最小的v[i

]−1v[i]-1

v[i]−1

個,且分給他的只需要比上乙個人多乙個。

#include #include #include #include #define ll long long

using namespace std;

const ll inf=1000000000019260817ll;

ll add(ll a,ll b)

const int q=2000005;

ll sm[q],v[q],cmp[q],lazy=0;

int tot=0;

int fa[q],si[q],ls[q],rs[q],ct[q];

int rt=0;

void upd(int x)

void ***(int x)

void splay(int x)

rt=x;

}void ins(ll val,int sz)

int p=rt;

while(1)

if(val57||o<48)o=gc;

while(o>=48&&o<=57)

return t;

}int main()

if(x>si[rt])

int p=rt,now=x;

while(1)

splay(p);

ll mus=add(cmp[p]*((ll)x-si[ls[p]]),sm[ls[p]]);

mus=add(mus,(ll)x*lazy);

if(mus>k)

printf("%lld\n",k-mus);

int ned=i-1-x-si[rs[p]],wil=i-1-x;

rs[p]=0;

if(ned==ct[p])

}else ct[p]-=ned,v[p]-=cmp[p]*ned,upd(p);

if(wil)ins(-lazy,wil);

ins(k-mus-lazy,1);

} return 0;

}

2017 山東二輪集訓 Day7 國王

給定一棵樹,每個點有黑白兩種顏色,定義一條簡單路徑合法當且僅當路徑上所有點黑色與白色數量相等,求有多少非空區間 l,r 使得所有編號 in l,r 的點形成的本質不同的合法簡單路徑數多於所有編號 notin l,r 的點形成的本質不同的合法路徑樹。考慮所有以 x 為乙個端點的合法簡單路徑數量為 f ...

2017 山東一輪集訓 Day4 基因

設定 sqrt 個關鍵點,維護出關鍵點到每個右端點之間的答案以及pam的左指標,每次暴力向左插入元素即可,為了去重,還需要記錄一下pam上每個節點在每個關鍵點為左端點插入到時候到最左邊出現位置,總複雜度 o n sqrt program by mangoyang pragma gcc optimiz...

2017 山東一輪集訓 Day7 逆序對

題解 滿滿的套路題。首先顯然從大到小列舉 然後每次生成的逆序對是1 i 1 的 這樣做dp是nk的 複雜度太高了 那我們轉化一下問題 變成sigma ai ai 據說是個經典問題。感覺非常奇妙 先容斥一下,也就是說 總的 至少1個條件不滿足 至少2個條件不滿足 那考慮一下如何算有x個條件不滿足 不滿...