Wannafly 4 F 線路規劃

2022-05-22 20:45:12 字數 2271 閱讀 2052

資料範圍252501 勁啊

q國的監察院是乙個神秘的組織。

這個組織掌握了整個q國的地下力量,監察著q國的每乙個人。

監察院一共有n個成員,每乙個成員都有且僅有1個直接上司,而他只聽從其上直接司的命令。其中1號成員是監察院的院長,這個龐然大物的主人。

由於時代的進步,監察院議會決定公升級組織的舊式通訊器,安裝最新的反偵測通訊器。

他們拿出了m組線路方案,其中第i組線路方案可以用乙個四元組(x[i]、y[i]、k[i]、w[i])描述,表示第x[i]號成員可以安裝與y[i]號成員的直接通訊線路,費用為w[i];x[i]號成員的上司可以安裝與y[i]號成員的上司的直接通訊線路,費用為w[i];x[i]號成員的上司的上司可以安裝與y[i]號成員的上司的上司的直接通訊線路,費用為w[i]; …… ;x[i]號成員的k[i] - 1級上司可以安裝與y[i]號成員的k[i] - 1級上司的直接通訊線路,費用為w[i]。(這k[i]條線路的費用獨立計算)

如果乙個集合內部的成員兩兩之間都可以通過直接或間接的通訊線路進行通訊,那麼這個集合的所有成員可以成立乙個特別行動組。

監察院想成立乙個成員最多的特別行動組,同時他們想讓安裝線路的費用之和最小,

所以他們找到了q國的天命者——你,請你幫助他們規劃出最優的線路。

$n,m \leq 252501$

sol:我們先考慮鏈上的做法,發現是區間向區間連邊然後求 mst,就是乙個裸的線段樹優化建圖 + kruskal

怎麼搞到樹上呢?好像不可搞,那就。。。好好聽話用 st 表優化建圖吧

我們可以把乙個區間拆成 log 層,用 st 表維護一下,每層看做乙個點然後用並查集搞

這樣為什麼是 log 的呢?我們可以考慮合併的寫法

我們設連邊的兩個區間為$s_1$,$s_2$,我們現在有兩個長度為$2^k$的區間$k_1$,$k_2$($k_1$屬於$s_1$,$k_2$屬於$s_2$)如果$k_1$,$k_2$沒連在一起,就連,並遞迴連它的 log 個子區間,連上了就 return

對於樹,我們可以維護乙個樹上倍增的結構,用 $s_$ 表示 $i$ 號點和它往上 $2^j$ 層的點組成的集合

合併跟鏈上一樣,最後我們只關心 $j = 0$ 時的連通資訊

這樣就是乙個優秀的乙個 log 的做法了

emmmmmmmmmmm

「題是好題,但是要卡常」

wzj52501怎麼跑的那麼快呀qqqaq

不管了不管了,常以後再卡吧

#include#define ll long long

using

namespace

std;

inline

intread()

const

int maxn = 252501

;int

n,m;

int fa[maxn][20],pos[maxn][20

];struct

data

}qs[maxn];

int ufs[4545180

],size[maxn],dfn;

ll val[maxn];

inline

int find(int x)

void merge(int a,int b,int k,int

v) merge(a, b,k - 1

,v);

merge(fa[a][k-1],fa[b][k-1],k - 1

,v);

}int

main()

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

qs[i].x = read(),qs[i].y = read(),qs[i].k = read(),qs[i].w =read();

sort(qs + 1,qs + m + 1

);

for(int i=1;i<=n;i++)pos[i][0] = ++dfn,size[dfn] = 1

;

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

for(int j=1;j<=17;j++)pos[i][j] = ++dfn;

for(int i=1;i<=dfn;i++)ufs[i] =i;

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

}int ans1 = 0;ll ans2 = (1ll << 60

);

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

printf(

"%d %lld

",ans1,ans2);

}

view code

哪位大手子教教我怎麼卡常呀qqqaq

Wannafly模擬賽4 題解

a fst是一名可憐的小朋友,他很強,但是經常fst,所以rating一直低迷。但是重點在於,他非常適合acm!並在最近的區域賽中獲得了不錯的成績。拿到獎金後fst決定買一台新筆記本,但是fst發現,在 能承受的範圍內,筆記本的記憶體和速度是不可兼得的。可是,有一些筆記本是被另外一些 完虐 的,也就...

Wannafly挑戰賽14 F 細胞

題解 ntt 二項式定理 再逆fft求出係數ans i 本題即可解了 另 採用fft的話,複數既不方便,誤差也很大。從fft到ntt 由費馬小定理可知 gp 1 p 1 p為質數 所以利用這個性質來對應單位複數根乘方的週期性,即 includeusing namespace std typedef ...

牛客 Wannafly模擬賽4 A

fst是一名可憐的小朋友,他很強,但是經常fst,所以rating一直低迷。但是重點在於,他非常適合acm!並在最近的區域賽中獲得了不錯的成績。拿到獎金後fst決定買一台新筆記本,但是fst發現,在 能承受的範圍內,筆記本的記憶體和速度是不可兼得的。可是,有一些筆記本是被另外一些 完虐 的,也就是記...