UOJ 349 WC2018 即時戰略

2022-03-31 14:43:57 字數 1683 閱讀 9143

被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')

第乙個說明叫cly外號會掉rp,因為他是大佬。

第二個說明cly是大佬不屑於aknoi。

對於樹的情況,容易想到的是乙個和紫荊花之戀一樣的替罪羊樹維護點分樹的做法。

但是顯然gg了。

考慮我們將乙個節點連到主體部分這個操作,類似於 lct 中的 access 。於是我們發現直接寫個 lct 就沒了。

寫法有多種,但是考慮到常數因子,建議連線完之後一遍access上去。不要自頂向下一邊access一邊splay一邊連邊,這樣常數大。

#pragma gcc optimize("ofast","inline")

#include #include "rts.h"

#define clr(x) memset(x,0,sizeof (x))

#define for(i,a,b) for (int i=a;i<=b;i++)

#define fod(i,b,a) for (int i=b;i>=a;i--)

#define pb push_back

#define mp make_pair

#define fi first

#define se second

#define _seed_ ('c'+'l'+'y'+'a'+'k'+'i'+'o'+'i')

#define outval(x) printf(#x" = %d\n",x)

#define outvec(x) printf("vec "#x" = ");for (auto _v : x)printf("%d ",_v);puts("")

#define outtag(x) puts("----------"#x"----------")

#define outarr(a,l,r) printf(#a"[%d...%d] = ",l,r);\

for(_v2,l,r)printf("%d ",a[_v2]);puts("");

using namespace std;

typedef long long ll;

const int n=300005;

#define ask explore

namespace so0

else

} }}namespace so1

int wson(int x)

void rotate(int x)

void splay(int x)

void access(int x)

} void ins(int a)

} while (1)

access(x);

} #undef ls

#undef rs

void main(int n) }}

void play(int n,int t,int type)

UOJ 349 WC2018 即時戰略

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

uoj 349 WC2018 即時戰略

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

UOJ 349 WC2018 即時戰略

傳送門 按照紫荊花之戀的做法,動態維護一下點分樹的形態 把點隨機打亂 每次從當前的根開始 explore 如果已經有了就暴力跳到那個點 否則加入這個點 注意一條鏈的要單獨處理 include include rts.h using namespace std typedef long long ll...