省選聯考 2021 A 卷 支配

2022-10-05 20:36:17 字數 1771 閱讀 7101

如果了解過支配樹是什麼,其實這道題會相當簡單。

明顯建立支配樹。

考慮連線 \((s,t)\) 帶來的影響。

對於 \(t\) 而言,它的最近支配點會變為 \(lca(s,t)\)。

考慮哪些點的受支配集會改變。顯然是存在 \((u,v)\) 如果 \(u\) 的支配集被改變,那麼 \(v\) 才可能會因為 \(u\) 而改變。

考慮如何改變。即,如果存在邊 \((u,v)\),那麼顯然 \(u\) 和 \(v\) 的最近支配點在一條鏈上。

如果 \(v\) 的最近支配點是 \(u\) 的新的最近支配點的祖先,那 \(v\) 必不可能被影響。否則 \(v\) 的最近支配點就會變得和 \(u\) 的一樣。

不會快速建立支配樹,但不影響總複雜度,掃一遍 \(o(n^2+nq)\)。

#include #include #include #include #include #include #include #include #include #define pii pair #define pll pair #define mp make_pair

#define fs first

#define sc second

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

//const int mxdt=100000;

//static char buf[mxdt],*p1=buf,*p2=buf;

//#define getchar() p1==p2&&(p2=(p1=buf)+fread(buf,1,mxdt,stdin),p1==p2)?eof:*p1++;

template void read(t &x)

while(s>='0'&&s<='9')

x *= f;

}template void write(t x , char s='\n')

if(x<0)

t tmp[25]={},t=0;

while(x) tmp[t++]=x%10,x/=10;

while(t-->0) putchar(tmp[t]+'0');

putchar(s);

}const int maxn = 3e3 + 5;

int n , m , q , head[maxn] , to[maxn * maxn] , nxt[maxn * maxn] , cnt;

void add(int u , int v)

int deg[maxn] , tmpd[maxn] , f[maxn][22] , dep[maxn] , pre[maxn];

int lca(int x , int y)

for (int i = 20; i >= 0; --i) if(f[x][i] != f[y][i])

return f[x][0];

}int ans;

int vis[maxn];

void dfs(int x , int v)

}void ddfs(int x)

}vector g[maxn];

int main()

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

queue q;

q.push(1);

while(!q.empty()) }

while(q -- > 0)

return 0;

}

場外模擬 省選聯考(B卷) 2020 遊記

同步 上次模擬 a aa 卷只有 155 15515 5 分,很不爽!所以,洛谷上已經有了 b bb 卷,抽空看一下吧!聽說 b bb 卷在 jx text jx 和少數省用了,總之挺少的,還挺簡單。還聽說大眾分是 350 35035 0,加油吧!day1 t1 text day1 t1 一看是個橙...

場外模擬 省選聯考(A卷重考) 2020 遊記

同步 上次 a aa 卷 155 15515 5,bb b 卷 360 36036 0 乙個退役,乙個進隊。所以說很不爽,來把 a aa 卷的題再看一遍。上次只看了 10 1010 分的暴力,認真了才發現答案是 2 min 2 times min 2 min,隨便弄個資料結構二分維護就可以搞到 o ...

省選聯考 2020 A 卷 組合數問題

前言 這是我退役賽省選中唯一一道答得令自己滿意的題目。也就是 skyh 難道你沒 ac 的那道題。這道題我想了大概二十多分鐘。覺得不是很簡單。然而考後出來才發現,大神們都是用數學推導 ac 的這道題。而我,眾所周知,退役在即的我菜的不行,自然不會數學推導。所以說如果你什麼也不會,你怎麼做這道題呢?於...