Codeforces Round #506 (Div. 3)
ABC咕咕咕
D. Concatenated Multiples
给定 \(n\) 个数,求有几对 \((i,j)\) 使得十进制下 \(a_i\) 和 \(a_j\) 连起来是 \(k\) 的倍数。
\(n\leq 2\times 10^5\),\(k \leq 10^9\)。
题解:
枚举拼起来的后面那个数是谁,假设它是 \(x\) ,位数是 \(w\)。
那么就是要求有几个 \(i\in [1,n]\) 满足 \((a_i*10^w+x)%k=0\)。
把每个 \(a_i*10^x%k\ (x\in[0,10])\) 预处理出来。
开个 map/二分/双指针统计一下。
\(O(n\log_2 n \lg k)\)
E. Tree with Small Distances
有一棵树,问最少加几条边使得根到每个点的距离不超过 \(2\)。
\(n \leq 2\times 10^5\)
题解:
考虑如果某个点要连边一定连到根最优,且每个点最多再连出一条边。
发现问题等价于至少选出几个点使得每个点到被选出的点的距离 \(\leq 1\) 或到根的距离 \(\leq 2\)。
可以先把每个点到根的距离处理出来 (dep),剩下的部分 dp。
\(dp[u][0/1/2]\) 表示以 \(u\) 为根的子树,根被选了/根的某个儿子被选了/都没被选 的最小代价。
随便转移。
最后答案就是所有 \(dep=3\) 的 \(min(dp_{i,1},dp_{i,2})\) 的和。
\(O(n)\)
F. Multicolored Markers
有一个无限大的网格,你可以把 \(a\) 个格子染红,\(b\) 个格子染蓝。
要求红格子边界是长方形或蓝格子的边界是长方形,且有色格子的边界是长方形。
问有色格子的最小周长。
\(a,b\leq 10^{14}\)
浙公网安备 33010602011771号