bsoj3392【省選模擬】樹上的詢問
點分治。
點分治入門題,首先這題可以直接做,也可以轉化成 "小於等於 \(k\) 的減掉 小於等於 \(k-1\) 的" ,然後相減來做。
兩者皆可。
#includeusing namespace std;
#define ll long long
#define ull unsigned long long
inline int inc(int x,int v,int mod)
inline int dec(int x,int v,int mod)
inline int read()while(ch>='0'&&ch<='9')return x*f;}
inline void write(int x)int len=0,dg[20];while(x>0)for(register int i=len;i>=1;i--)putchar(dg[i]+48);}
const int n=1e5+5;
const int m=1e7+5;
struct nodeedge[1000005];
int used[n],head[n],idy,q[n],maxson[n],tot,size[n],dis[n],rev[n],cnt;
bool vis[n],ans[n],rvis[m];
int n,m,id,idx;
void add(int u,int v,int w)
void dfs(int x,int fa)
maxson[x]=max(maxson[x],tot-size[x]);
if(maxson[x]=0&&q[k]-rev[j]<=1e7 && rvis[q[k]-rev[j]])ans[k]=1;
}} for(int j=1;j<=cnt;j++) if(rev[j]<=1e7)used[++idy]=rev[j],rvis[rev[j]]=1;
} for(int i=1;i<=idy;i++)rvis[used[i]]=0;
}void solve(int x)
}int main()
for(int i=1;i<=m;i++)q[i]=read();
maxson[id]=tot=n;
dfs(1,0);
solve(id);
for(int i=1;i<=m;i++)
return 0;
}
這題第二種做法很巧妙,同樣的辦法在一道模擬題也見過,同樣是容斥,但是那道題是 \(dp\) 。 4 3 省選模擬賽 石子遊戲 樹上博弈
注意觀察題目 每個點都只能將石子給自己的兩個兒子 且石子個數 1.顯然 這是乙個階梯nim.只有和最後一層的奇偶性相同的層才會有貢獻 證明也很顯然。那麼這其實就是近乎nim遊戲了 勝負自然取決於所有有貢獻的石子堆的異或和。但是 上午我傻了的一點 沒有分清sg函式和nim遊戲的聯絡。在nim遊戲中sg...
NOI省選模擬 小奇的花園
題目背景 小奇在家中的花園漫步時,總是會思考一些奇怪的問題。問題描述 小奇的花園有n個溫室,標號為1到n,溫室以及以及溫室間的雙向道路形成一棵樹。每個溫室都種植著一種花,隨著季節的變換,溫室裡的花的種類也在不斷發生著變化。小奇想知道從溫室x走到溫室y的路徑中 包括兩個端點 第t種花出現的次數。輸入格...
JZOJ 省選模擬 夕張的改造 kaisou
description 提督們驚奇地發現,2019 年實裝的改造非常少。經調查,原來是改造廠的廠長於八日剋扣了其他艦娘改造的圖紙,並且在 2020 年的第乙個月利用這些圖紙進行了華麗的改造,一共有三種形態,於八日改二,於八日改二特,於八日改二丁,對空 對陸 對潛 開幕雷 五裝備格,無所不能。鎮守府雪...