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

2021-08-04 08:16:21 字數 756 閱讀 2220

因為時間關係,就先強行明白了

dt點分治是接觸過最難懂的東西了(可能是這乙個題)

就是建立一顆點分樹

注意子樹向重心連邊,修改時直接往上跳,用過點和不過點可以簡單容斥

就知道這些了

碼:#include#include#includeusing namespace std;

#define ll long long

#define n 300000

int xia[n],zhong[n],v[n],hou[n],xia2[n],zhong2[n],v2[n],hou2[n],dui[n],dis[n],sz[n],max1;

ll d1[n],d2[n],he[n];

int n,m,i,tot,xh[n],tot2,rt,fu[n],mn[n][25],cnt,log[n],q,a,b,c;

bool vis[n];

void jia(int a,int b,int c)

void jian(int a,int b,int c)

void jian2(int a,int b,int c)//建立原路徑關係

void zzx(int o,int fa)

maxx=max(maxx,tot-sz[o]);

if(maxxy) swap(x,y);//對應dfs序

k=log[y-x+1];return ans-min(mn[x][k],mn[y-(1<>1]+1;//算2的log

for(int j=1;(1<

bzoj3924幻想鄉戰略遊戲

今天一整天都感覺有點心神不定。這題我的寫法是跟kczno1大爺的寫法一樣。然後覺得點分治複雜度跟度數有關,是不對的。那標算還點分治?在洛谷上ac後,又在bzoj上交了一發,好像是rk10?接著就發現原版題面裡有一句話 每個點的度數不超過20 真想 出題人。include include includ...

ZJOI2015 幻想鄉戰略遊戲

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

P3345 ZJOI2015 幻想鄉戰略遊戲

題意 求帶權重心,即求乙個點 u 使得最小化 sum dis u,v times w v 輸出這個最小值。點權帶修,多組詢問。動態點分治。先建出點分樹,以下的父子關係均是建立在點分樹上的。s u 表示子樹 u 的點權和 sfa u 表示子樹 u 對 fa u 的貢獻,即 sum dis v,fa u...