[Done] Codeforces Round #562 (Div. 2) 题解

A - Circle Metro

模拟几百步就可以了。

 

B - Pairs

爆搜一下,时间复杂度大概是 $O(4 * n)$

Code: 56306723

 

C - Increasing by Modulo

二分答案,然后验证一下就好了,第一个数越小越好,之后的数都要求和前一个相等或者大一点。复杂度 $n * log(n)$

 

D - Good Triple

对于每一个 $i$,需要计算出最小的 $x$,使得 $s[i-x] = s[x] = s[i + x]$,对于 $i$ 而言,如果区间左端点在 $[1, i - x]$ 且右端点在 $[i + x, n]$,这样的区间就是合法区间。

处理出每一个合法区间集合:左端点在 $[1, i - x]$ 且右端点在 $[i + x, n]$,最后的工作就是去重,计算有多少种不同的区间。这个可以用矩形面积并来解决,不赘述。

这题的复杂度我不太会计算,第一步我是暴力算出来的,看似 $O(n^2)$ 的操作,结果好像很快就跑过去了。

Code:56313123

 

E - And Reachability

这题是比较标准的有向无环图上的 dp 题。

处理出 $dp[i][j]$ 表示第 $i$ 个位置的数字往后走,走到二进制第 $j$ 为是 $1$ 的离 $i$ 最近位置。

如果知道了 $dp[i][j]$,那么我们可以枚举最后一步如何跳到位置 $y$,必然是枚举 $y$ 的二进制的中的 $1$。

复杂度:$O(n*logn*logn)$

Code:56545084

posted @ 2019-07-03 21:41  Fighting_Heart  阅读(251)  评论(0编辑  收藏  举报