#418. 【集訓隊作業2018】三角形
和三角形沒有關係
只要知道兒子放置的順序,就可以直接模擬了
記錄歷史最大值
用乙個pair(a,b):之後加上a個,期間最大值為增加b個
合併?a1+a2=(a1+a2,max(b1,a1+b2))
放置順序考慮貪心
比較:a放在b前面(和父親進行合併)當且僅當(c=a+b).b
分a.a和b.a的正負進行討論
初始的pair:(w[x]-∑w[son[x]],w[x])把兒子會都扔掉
初始的pair放進堆裡,取n-1次,和父親合併,加入新的連通塊的pair
鍊錶維護操作序列
處理出操作順序,模擬或者線段樹合併
懶惰刪除堆自帶的bug
必須要使得決策堆和刪除堆的元素的相對順序是一樣的!
小於號過載充分!不能出現決策堆a,b,刪除堆b,a的情況!
小於號過載充分的話:
使得除非二者完全相等,否則必須有固定的大小順序(未定義的話會有很多相等,比較就是隨機的)
這樣才能使得兩個堆的相對位置相同。
#include#define reg register intview code#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
#define mid ((l+r)>>1)
using
namespace
std;
typedef
long
long
ll;template
il void rd(t &x)
template
il void output(t x)
template
il void ot(t x)
template
il void prt(t a,int st,int nd)
namespace
miracle
po(ll aa,ll bb,ll dd)
po friend
operator +(po a,po b)
bool friend operator
if(a.a-a.b!=b.a-b.b) return a.a-a.bb.b;
if(a.id!=b.id) return a.id>b.id;
return a.a>b.a;
}bool friend operator ==(po a,po b)
void
op()
}nc[n],ori[n];
priority_queue
q,d;
intff[n];
int fin(int
x)int
st[n],nd[n];
struct
lcp[n];
intpos[n];
struct
nodet[
40*n];
inttot;
intrt[n];
intvis[n];
void pushup(int
x)void upda(int &x,int l,int r,int
p,po c)
if(p<=mid) upda(t[x].ls,l,mid,p,c);
else upda(t[x].rs,mid+1
,r,p,c);
pushup(x);
}int merge(int x,int
y)int
pa[n],w[n];
ll ans[n];
intmain()
for(reg i=1;i<=n;++i)
int o=n-1
;
while(o--)
if(vis[now.id])
vis[now.id]=1
;
int to=fin(pa[now.id]);
//cout<
if(to!=1
) p[nd[now.id]].nxt=st[to];
p[st[to]].pre=nd[now.id];
st[to]=st[now.id];
while(q.size()&&d.size())
}for(reg i=2;i<=n;++i)
}int x=st[1
];
for(reg i=1;i<=n;++i)
//prt(pos,1,n);
for(reg i=1;i<=n;++i)
//prt(rt,1,n);
x=st[1
];
for(reg i=1;i<=n;++i)
x=p[x].nxt;
}prt(ans,
1,n);
return0;
}}signed main()
/*author: *miracle*
date: 2019/4/13 19:58:12
*/
UOJ449 集訓隊作業2018 喂鴿子
uoj 看題後 感覺自己越來越菜了,再這樣下去,要是正式考試送溫暖豈不是連溫暖都拿不到了。一臉min max反演的樣子,由於每個鴿子都等價,列舉子集大小 i ii 即可 a ns i 1n n i 1 i 1nif i ans sum n binom n i 1 frac n i f i ans i...
UOJ 449 集訓隊作業2018 喂鴿子
449.集訓隊作業2018 喂鴿子 dp好題 處理前m個,最快吃飽的鴿子期望的時間 根據期望的定義 考慮每個方案數的概率 期望次數 列舉前m個用了x個,概率都是 1 m x em x 而em x 表示往前m個扔了x個期望的總共次數,就是x n m 考慮用了x個的方案數 生成函式egf思想。而出現乙個...
UOJ424 集訓隊作業2018 count
先特判掉 m n 的情況。考慮先確定乙個 f 陣列,然後判定他能否生成乙個好序列。考慮先確定最靠左邊的最大值的位置,此時他大於等於後面的元素,然後嚴格大於前面的元素。不難發現這種確定方式可以固定一組 f 序列,同時,如果這張圖上的最長鏈小於等於 m 那麼這個答案就是合法的。觀察到我們其實只關心長度,...