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}\)

posted @ 2020-09-11 18:48  daduda  阅读(93)  评论(0)    收藏  举报