loj2478林克卡特樹

2021-08-20 23:29:18 字數 997 閱讀 4297

聽說這題要用到乙個叫做「帶權二分」的黑科技(名稱來自於apio2018講課課件),那就讓我來體驗一下。

寫了一發,感覺概念還好懂,但特別容易掛。

有幾個要點:

1.要對輸入資料加以隨機擾動,不然會被三點共線的資料卡。

2.如果上次答案和這次答案的差很小,則直接輸出這次答案,不然會被卡精度。

3.其實可以把權值和方案封裝成乙個struct,這樣寫起來會方便一點。

然後就搶下了洛谷執行時間rk1?真爽。

達成成就->做完九省聯考day2所有題目

// luogu-judger-enable-o2

#include

typedef

unsigned

int ui;

inline ui r()

char ibuf[1

<<25],*ih=ibuf,obuf[1

<<25],*oh=obuf;

inline

void read(int&x)

const

int n=3000005;

struct edgee[n<<1];

int da[n],id[n],xb,hh[n],i,k,n,x,y,v,a[n],b[n],c[n];

double ef[n],f[n],g[n],h[n];

void dfs(int x,int fa)

int main();hh[x]=xb;

e[++xb]=(edge);hh[y]=xb;

}xb=0;dfs(1,0);

double r=1e12,l=-1e12,m,lst;

for(;;)

if(su==k+1 || (su && fabs(lst-z)<0.1))

if((z==0 && su==0) || (su && su1))r=m;else l=m;

lst=z;

}return

0;}

HEOI 2018 林克卡特樹

先說60分的.思路題解上很清晰 問題似乎等價於選k 1條點不相交的鏈哎 f x,k,0 1 2 表示考慮以x為根的子樹,選了k條鏈,點x的度數為0 1 2的最優解.我說一下比較坑的地方吧 1.初始化要 inf 反正我不加這個會wa 2.注意轉移的順序 3.別忘了突然出現新的路徑或者突然消失了乙個路徑...

2018八省聯考 林克卡特樹

題目真滴皮 orz rqy 10分的暴力都沒拿到 10分直接求直徑 60分 容易?想到題目等價於求k 1條不相交的鏈 設狀態f i j 0 1 2 f i j 0 1 2 表示以第i個節點為根的子樹用了j條鏈並且根和兒子連有 0,1,2 條邊。轉移分為5類 g j cc 0 max g j cc 0...

八省聯考2018 林克卡特樹

挺簡單的一道題。原題斷k kk條邊連k kk條邊權為0 00的邊相當於尋去k 1 k 1k 1條不相交鏈出來,將它們連上得到的結果。所以我們要從原樹中選取k 1 k 1k 1條鏈出來,使得它們的權值和最大。我們發現恰好k 1 k 1k 1條鏈這個限制是比較難限制的,考慮通過凸優化二分去進行維護。由於...