NC14419 線路規劃(最小生成樹 倍增)

2022-05-27 13:15:11 字數 1108 閱讀 1055

本來是一道最小生成樹的問題,但是因為邊數過多,因此考慮優化

觀察到這是區間資訊,可以聯想到使用倍增演算法,將區間變成2進製,從大長度不斷往下,每一層做一下最小生成樹,目的是排除一些不需要的連邊。用佇列儲存有用的

這樣到0的時候做的最小生成樹就是答案。這樣的複雜度保證是,我們只會做log層,並且每層的佇列中的資訊最多是n,因此是nlogn

#includeusing

namespace

std;

typedef

long

long

ll;const

int n=3e5+10

;const

int mod=1e9+7

;int p[n][31

];int f[n][31

];ll sum[n],tot[n];

intn,m;

struct

nodes[n];

queue

q1[30],q2[30

];bool

cmp(node a,node b)

int find(int x,int

i)

return

p[x][i];

}int

main()

for(i=1;i<=pp;i++)

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

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

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

sort(s+1,s+1+m,cmp);

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

}for(i=pp;i>=0;i--)

else

}else

if(q1[i].size())

else

int pa=find(tmp.a,i),pb=find(tmp.b,i);

if(pa!=pb)

else}}

}ll ans=1e18;

int mx=0

;

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

else

if(tot[i]==mx)}}

cout"}

view code

nc 監聽資料 linux包之nc之nc命令

nc 1.84 22.el6.x86 64 不用系統上提供的nc版本會有所不同,其提供的引數使用方法也略有差異 nc v w 1 192.168.2.10 z 1 65535 grep succeeded 埠掃瞄 1.4 強制使用ipv4 2.6 強制使用ipv6 3.d 允許socket通訊返回d...

nc命令介紹

名字 nc 連線 監聽任意的tcp和udp。概要 nc 46ddhklnrstuuvzc i 間隔 p 源埠 s 源ip位址 t 服務型別 w 超時時間 x 協議 x 位址 埠 主機名 埠 s 詳細說明 nc netcat 的功能使用是涉及到tcp或者udp的時候。它可以開啟tcp連線,傳送udp包...

nc命令說明

一,什麼是nc nc是netcat的簡寫,因為它短小精悍 功能實用,被設計為乙個簡單 可靠的網路工具 二,nc的作用 1 實現任意tcp udp埠的偵聽,nc可以作為server以tcp或udp方式偵聽指定埠 2 埠的掃瞄,nc可以作為client發起tcp或udp連線 3 機器之間傳輸檔案 4 機...