前40分鐘出了兩題,後面隊友一直在做3題,我一直看5題。原來根本沒有遇見過斯坦納樹的題,一看被嚇到了。。。
其實這個題就是要把樹上除了根節點的其他點分為n個組,相當於給節點標號,要求最小生成樹的和的最大值,根本沒用到斯坦納樹。
樹上每一條邊的貢獻就是以這條邊起點為跟的子樹節點不同標號的數量,因為要求最大值,所以子樹中標號的種類越多越好,最多為min(k,size[root]);
然後乘一下加起來就好。
#include#include#includeusing namespace std;
int n,k;
const int maxn = 1000006;
struct node
node(int a,int b,long long c):to(a),next(b),w(c){}
}edge[maxn*2];
int head[maxn],sz[maxn];
long long cost[maxn];
int tot;
void dfs(int u,int fa)
}int main()
dfs(1,-1);
long long res = 0;
for(int i=2;i<=n;i++)
printf("%i64d\n",res);
}return 0;
}
2017多校聯合訓練補題
寫在前面 經過多校的一番洗禮後,深感自己是個智障.此處存放2017多校的補題記錄和各種總結 感想,希望和大家多多交流 about 戰鬥力等級 題目難度 標註 lv.0 區域賽簽到題難度,codeforces div2 ab lv.1 cf div2能穩定輸出兩題,能解決基本演算法的裸題。lv.2 r...
多校第9場
這道題挺水,只是要耐心的打表,我一開始只打了一半就不想做了,也是因為我的方法太麻煩了,把x,y座標分開存,處理的資料量差不多增加了一倍。這題有一點注意 題目中並沒有限制字串的長度,所以char陣列盡量開大些。下面是賽後ac的 include include include include inclu...
牛客多校第5場D Drop Voicing
有乙個1 n的排列,有以下兩種操作 drop 2 將倒數第二個數放到開頭,前面的數向後平移 invert 將倒數第二個數放到開頭,前面的數向後平移 若干連續的drop 2稱為multi drop。計算要使該排列排成1 n所需的最少的multi drop的數量。首先invert可以無條件使用,那麼就可...