今天一整天都感覺有點心神不定。
這題我的寫法是跟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 移動一格的話,設 ...