聽說這題要用到乙個叫做「帶權二分」的黑科技(名稱來自於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條鏈這個限制是比較難限制的,考慮通過凸優化二分去進行維護。由於...