bzoj3924幻想鄉戰略遊戲

2021-08-08 23:46:12 字數 1637 閱讀 5537

今天一整天都感覺有點心神不定。

這題我的寫法是跟kczno1大爺的寫法一樣。

然後覺得點分治複雜度跟度數有關,是不對的。那標算還點分治?

在洛谷上ac後,又在bzoj上交了一發,好像是rk10?

接著就發現原版題面裡有一句話「每個點的度數不超過20」,真想**出題人。

#include

#include

#include

typedef

long

long ll;

const

int l=3000000,n=100005;

char ibuf[l],*ih=ibuf,obuf[l],*oh=obuf;

inline

int getint()

inline

void putl(register ll x)else *oh++='0';

}int n,a,b,c,q,i;

struct treee[n<<1];

int h[n],xb,sz[n],dep[n],dad[n],dfn[n],id[n],top[n],ma[n],v[n],sv;

ll dv;

struct segtreet[n<<2];

inline

void add(int i,int v)

inline

void pushdown(int i)

}void build(int i,int l,int r,int*dep,int*dad,int*dfn)

build(i<<1,l,t[i].mid,dep,dad,dfn),build(i<<1|1,t[i].mid+1,r,dep,dad,dfn);

t[i].x=t[i<<1].x+t[i<<1|1].x;

};void add(int i,int l,int r,int v)

pushdown(i);

if(l>t[i].mid)add(i<<1|1,l,r,v);

else

if(r<=t[i].mid)add(i<<1,l,r,v);

else add(i<<1,l,t[i].mid,v),add(i<<1|1,t[i].mid+1,r,v);

t[i].s=t[i<<1].s+t[i<<1|1].s;

t[i].m=t[i<<1].m.first>t[i<<1|1].m.first?t[i<<1].m:t[i<<1|1].m;

}ll query(int i,int l,int r)

int query2(int sv)

}t;inline

void addedge(int u,int v,int w);h[u]=xb;

e[++xb]=(edge);h[v]=xb;

}void dfs1(int x,int fa)

}void dfs2(int x,int fa)

inline

void prepare()

inline

void add(int x,int v)

inline ll query()

}t;int main()

return fwrite(obuf,1,oh-obuf,stdout),0;

}

Bzoj3924 Fjoi2015幻想鄉戰略遊戲

傲嬌少女幽香正在玩乙個非常有趣的戰略類遊戲,本來這個遊戲的地圖其實還不算太大,幽香還能管得過來,但是不知道為什麼現在的網遊廠商把遊戲的地圖越做越大,以至於幽香一眼根本看不過來,更別說和別人打仗了。在打仗之前,幽香現在面臨乙個非常基本的管理問題需要解決。整個地圖是乙個樹結構,一共有n塊空地,這些空地被...

2017 7 26 幻想鄉戰略遊戲 失敗總結

因為時間關係,就先強行明白了 dt點分治是接觸過最難懂的東西了 可能是這乙個題 就是建立一顆點分樹 注意子樹向重心連邊,修改時直接往上跳,用過點和不過點可以簡單容斥 就知道這些了 碼 include include includeusing namespace std define ll long ...

ZJOI2015 幻想鄉戰略遊戲

題意 求乙個樹的帶權重心,帶修改。現在首位的題解的方法太噁心了,這裡介紹我自己的理解。假設重心為 x 我們有它的代價為 sum limits operatorname i,x times val i 其中 val i 表示 i 節點的權值。那如果將重心向 x 的某乙個相鄰節點 y 移動一格的話,設 ...