牛客CSP S提高組賽前集訓營2

2021-09-29 11:17:30 字數 2595 閱讀 5458

然後隨便用乙個資料結構維護一下就行了,我寫的線段樹。

我們先找出每個環,然後我們先刪連線環的邊,每刪一條就可以多產生乙個聯通塊,在考慮刪環邊,發現從最大的環刪起一定最優(因為你刪的第一條邊得不到任何新的聯通塊)。

就很容易想到tar

jantarjan

tarjan

,發現你只能寫出80

8080

分,因為可以用形如∞

\infty

∞的仙人掌,那麼邊雙聯通分量就會炸。

考慮另一種生成樹的方法,先生成一棵樹,然後向樹上模擬加邊生成環,最後我們需要找出沒有被環包含的點,可以用樹上差分,也可以用所有邊

−環上邊

所有邊-環上邊

所有邊−環上

邊得到剩下的點。

時間複雜度o(n

)o(n)

o(n)

#include

#include

#include

using

namespace std;

const

int maxn =

1000005

;int

read()

int n,m,k,cnt,ans,tot,f[maxn]

,p[maxn]

,dep[maxn]

;int a[

2*maxn]

,b[2

*maxn]

,fa[maxn][20

];priority_queue<

int> q;

struct edgee[2

*maxn]

;int

findset

(int x)

void

dfs(

int u,

int par)

intlca

(int u,

int v)

intmain()

,f[u]

=tot;

e[++tot]

=edge

,f[v]

=tot;

p[x]

=y;}

}for

(int i=

1;i<=n;i++)if

(!dep[i]

)int t=0;

for(

int i=

1;i<=cnt;i++)if

(k<=m-t)

ans+

=m-t;k-

=m-t;

while

(!q.

empty()

)printf

("%d\n"

,ans)

;}

牛客CSP S提高組賽前集訓營1

比賽鏈結 官方題解 before t1觀察 結論題,t2樹形dp,可以換根或up down,t3正解妙,轉化為圖上問題。題目質量不錯,但資料太水了 一共n個石子堆,每個石子堆有ai個石子,兩人輪流對石子塗色 先手塗紅,後手塗藍 且需要保證當前回合塗的石子顏色不能和它相鄰的兩個同色,誰塗不下去誰輸。一...

牛客CSP S提高組賽前集訓營5(待更)

題目描述 神樹大人造了乙個長為n的01序列,並邀請無所事事的神j來和他博弈。每一輪裡,若這個序列的第1項是0,那麼神樹大人可以選擇讓它不變或者變成1 若這個序列的第1項是1,那麼神j可以選擇讓它不變或者變成0。接著對這個序列進行旋轉操作 即將第1項放到第n項的後面,其他項依次替補。如果這個序列變為全...

牛客CSP S提高組賽前集訓營5 解題報告

linker 總分 100 100 40 240 結論題。無論如何神j都會贏。最優決策 神樹變化了我就不變,神樹不變我就變化。includeusing namespace std typedef long long ll const int mod 998244353 inline ll pow l...