20230803模拟赛
20230803模拟赛
T1摆花
sb结论题,考场上题读错了,我更是sb。
直接输出最小区间长度。
T2打饭
题意
给定 \(n,k\) 和序列 \(a\)。
求一个 \(a\) 的排列方式使得
\[\sum_{i=1}^{n-k} |a_i-a_{i+k}|
\]
最小,输出这个最小值。
题解
可以转化成把 \(n\) 个数分成 \(k\) 组,且有 \(n \bmod k\) 个组比其他组多一个,且每组从小到大排序。
先将 \(a\) 排序。
设 \(dp\) 状态为 \(f_{i,j}\) 为考虑到第 \(i\) 组,有第 \(j\) 个组比其他组多一个,当前的最小答案。
\(dp\) 式子显然。
f[i][j]=min(f[i][j],f[i-1][j]+a[len(i,j)]-a[len(i,j)-m+1]);
if(j)f[i][j]=min(f[i][j],f[i-1][j-1]+a[len(i,j)]-a[len(i,j)-m]);
T3小象砍树
题意
给你一棵 \(n\) 个节点的带标号无根树。
每次,你可以选择一个度数为 \(1\) 的节点并将它从树上移除。问总共有多少种不同的方式能将这棵树删到只剩 一个点。
两种方式不同当且仅当至少有一步被删除的节点不同。
题解
典型换根 \(dp\)。
\(siz_u\) 表示 \(u\) 子树的大小。
用 \(f,g\) 分别表示子树和以 \(u\) 为根时的答案。
\[f_u=\prod_{E_{u,v}\in G} f_v\times C_{\sum_{E_{u,i}\in G}^{v} siz_i }^{siz_v}
\]
g[ed[i].v]=g[u]*inv[n-1]%mod*fac[n-siz[ed[i].v]-1]%mod*fac[siz[ed[i].v]]%mod*C(n-1,siz[ed[i].v]-1)%mod;
懒得写 \(\LaTeX\) 了。
T4路径计数
题意
给定 \(n,m\),对于一个 \(n\) 个点的完全二叉树,编号为 \(i\) 的点的父亲为 $\left \lfloor \frac{i}{2} \right \rfloor $。
现在添加 \(m\) 条边,求图上有多少条简单路径(简单路径指一条没有多次经过同一个点的路径,两条路径不同当且仅当经过的边集不同或经过边的顺序不同)。
答案对 \(1e9+7\) 取模。
\[1\leq n\leq 10^9,1\leq m\leq 10
\]