給定一棵樹,求兩點路徑上的不同權值個數和權值是k的倍數的個數
第二問可以直接離線詢問,暴力\(n\sqrt\)列舉因數更新答案,路徑作差
第一問是樹上莫隊模板題
樹上莫隊:在括號序列上跑莫隊,對於單鏈和雙鏈要分類討論,更改權值上也有細微差別,還要特判lca的情況
合理壓行和利用c++11有效縮短**
不知道官方題解是啥麼東西,複雜度就是\(o(m\sqrt)\),而且上界很鬆
const int n=1e5+10;
int n,m,len,a[n];
vector g[n],fac[n];
struct que;
vector q[n];
struct node a[n];
int ans[n],dep[n],fa[n][20];
int line[n<<1],l[n],r[n],dfn;
void pre_dfs(int u,int f)
int lca(int x,int y);
else a[i]=(node);
q[x].pb((que)),q[y].pb((que));
q[lca].pb((que)),q[fa[lca][0]].pb((que));
} rep(i,1,m) ans[i]=0;
dfs(1,0);
sort(a+1,a+m+1,[&](node x,node y)
rep(i,1,n) cnt[a[i]]=0;
now=0;
printf("case #%d:\n",kase);
rep(i,1,m) printf("%d\n",ans[i]);
}}
Wannafly挑戰賽14 F 細胞
題解 ntt 二項式定理 再逆fft求出係數ans i 本題即可解了 另 採用fft的話,複數既不方便,誤差也很大。從fft到ntt 由費馬小定理可知 gp 1 p 1 p為質數 所以利用這個性質來對應單位複數根乘方的週期性,即 includeusing namespace std typedef ...
牛客挑戰賽39 密碼系統 字尾陣列
link 密碼系統 容易發現一共有k種不同的劃分 而每種劃分中我們要求出字典序最大的那個然後和其他的比較求出字典序最小的。先考慮如何求出最大的 容易發現這是字典序的問題 求出sa陣列然後倒著掃瞄就行了 分段的話按i k分即可。求出最大的了之後考慮如何求出最小的 容易發現還是sa陣列看一下他們之間的相...
Wannafly 11 挑戰賽F 白兔的遊戲
nim遊戲是這樣的 有 n 個石子堆,第 i 個石子堆有 a i 個石子,兩個人輪流選擇乙個石子堆並從中拿走乙個或者多個石子。拿走最後乙個石子的人獲勝。現在有兩個人他們決定每次隨機選擇乙個合法決策來操作。現在他們想知道在這種決策方式下先手的勝率以及所有可能的情況中先手獲勝的次數,對 99824435...