UOJ 349 WC2018 即時戰略

2022-05-07 18:36:12 字數 1149 閱讀 1064

傳送門

按照紫荊花之戀的做法,動態維護一下點分樹的形態

把點隨機打亂

每次從當前的根開始 \(explore\),如果已經有了就暴力跳到那個點

否則加入這個點

注意一條鏈的要單獨處理

# include # include "rts.h"

using namespace std;

typedef long long ll;

const int maxn(3e5 + 5);

const double alpha(0.7);

int n, first[maxn], cnt, deep[maxn], frt[maxn], vis[maxn], idx, root;

int sz[maxn], nsz, mx[maxn], rt, mark[maxn], size[maxn], id[maxn], see[maxn];

struct edge edge[maxn << 1];

inline void add(int u, int v) , first[u] = cnt++;

edge[cnt] = (edge), first[v] = cnt++;

}void clear(int u, int ff)

void getroot(int u, int ff)

mx[u] = max(mx[u], nsz - sz[u]);

if (!rt || mx[u] < mx[rt]) rt = u;

}void build(int u)

}inline void rebuild(int u)

void update(int u, int v)

++size[frt[u]];

if (frt[u] && alpha * size[frt[u]] < size[u]) mark[frt[u]] = 1;

update(frt[u], v);

if (mark[u]) rebuild(u);

}void play(int n, int t, int datatype)

else

see[id[i]] = 1;

} }else

else

}} }

}

UOJ 349 WC2018 即時戰略

題目鏈結 一開始已知一號點。每次可以選定乙個已知點和乙個未知點,然後互動庫會返回從已知點出發到達未知點路徑上的第二個點。要求在有限步之內知道每乙個點。次數要求 鏈的情況要求 o n o n o n 其餘是 o n logn o nlogn o nlog n 首先是鏈的情況,記錄當前左右端點不斷往後探...

UOJ 349 WC2018 即時戰略

被cqz d沒了。我d cly 關你啥事 逃 首先鏈的情況直接rand就好了。期望次數 o n log n 然而我一開始寫掛了。開始扯淡 我用這個模數,就可以過原題資料 c l y a k i o i 但是用以下兩種都不行 g l y a k i o i c l y a k i o i n o i ...

uoj 349 WC2018 即時戰略

題目鏈結 正解 link cut tree 這道題我在考場上從看題到放棄只花了 20 多分鐘。爆剛 t2 無果,12 點的鐘聲響起,我無奈地開始看這道題,然後發現了生的希望。只寫了二十幾分鐘,然後又滾回去剛 t2 了。正解根本就沒去想了 雖然本來也不會。不得不說這道題的標算還是很妙的,我就算去想也不...