BZOJ 1758 Wc2010 重建計畫

2022-08-19 20:54:13 字數 980 閱讀 7617

要求平均值最大,二分平均值,判定是否存在一條合法路徑權值為正數,點分治+單調佇列

看上去沒有任何問題,然而其實每次點分的時候要按子樹深度從小到大排序然後更新答案

複雜度o(n log ^ 2 n)

這個東西交上去又t了,然後學習了一下分數規劃怎麼二分,發現了一點神奇的方法,交上去又t了(可能我自己寫炸了)........然後把兩種拼一起.......跑得飛起

這題t了7發......

#include#include#include#define eps 1e-5

using namespace std;

int cnt,root,n,n,l,r,sz[100005],dep[100005],last[100005],vis[100005],q[100005],f_[100005];

double ans,cntkey,ans,g[100005],f[100005];

struct nodee[200005];

struct node1e[100005];

void add(int a,int b,double c)

void find_root(int x,int fa)

f_[x]=max(f_[x],n-sz[x]);

if (f_[x]=l && dep<=r) ans=max(ans,f[dep]);

for (int i=last[x]; i; i=e[i].next)

}void solve(int x);

}sort(e+1,e+cnt+1,cmp);

for (int i=1; i<=e[cnt].dep; i++) g[i]=-1e9;

for (int i=1; i<=cnt; i++)

while (head<=tail && q[head]=0;

}int main()

printf("%.3lf\n",l);

}return 0;

}

BZOJ1758 WC2010 重建計畫

description input 第一行包含乙個正整數n,表示x國的城市個數.第二行包含兩個正整數l和u,表示政策要求的第一期重建方案中修建道路數的上下限 接下來的n 1行描述重建小組的原有方案,每行三個正整數 a i,b i,v i 分別表示道路 a i,b i 其價值為 v i 其中城市由1....

BZOJ 1758 Wc2010 重建計畫

bzoj 1758 參考部落格 給出乙個 n 個節點帶邊權的樹,要求找出一條邊數在 l,u 之間的路徑使得 dfrace w 最大 n le100000,1 le l le u le n 1,v i le1000000 40sec,128mb 首先01分數規劃轉判斷問題,現在我們每個邊有新的邊權,我...

WC2010 重建計畫

嘟嘟嘟 要不這篇部落格我水一下?思路很顯然,點分治 01分數規劃 單調佇列。但就是難寫。點分治的時候我們把每乙個點到重心這條鏈按深度排序,然後對於每乙個點的鏈就有乙個連續深度的區間可以和這條鏈拼上,因為要找一條權值大於 0 的鏈,那就相當於找這個區間的最大值。然後隨著點深度遞增,這個區間就不斷向左移...