「解题报告」Codeforces Round 669 (Div. 2)
蒟蒻下分场……
A. Ahahahahahahahaha
注意到 01 串一定有 $\ge n/2$ 个 0 或者 1,依此构造即可。
1 | int c = 0; memset(a, 0, sizeof(a)); |
B. Big Vova
$O(n^2)$ 贪心即可。
1 | for(int i = 1; i <= n; i++) usd[i] = 0; |
C. Chocolate Bunny
连续询问 $x,y$ 和 $y, x$,得到 $a,b$,则有 $\max(a,b)=\min(p_x,p_y)$,依此模拟即可。
1 | n = read(); int lst = 1; |
D. Discrete Centrifugal Jumps
理性分析一下,边数看上去不是 $O(n^2)$ 的而是 $O(n)$ 的,那么可以线性地把图建出来,单调栈维护一下即可。
但是这个题并不需要最短路算法,注意到这是一个 DAG,因此直接 DP 计算即可,时间复杂度 $O(n)$。
1 | n = read(); for(int i = 1; i <= n; i++) a[i] = read(); |
E. Egor in the Republic of Dagestan
算是比较裸的一道 E 题了……
设 $f[u,0/1]$ 表示在 $u$ 点,选 0 边还是选 1 边的答案,对于一条边 $u\gets v$,应当有 $f[u,c]\gets \max(f[v,0],f[v,1])+1$,其中 $c$ 代表边 $u\gets v$ 的颜色。
注意到一个点不会被松弛超过一次,直接跑 Dijkstra 转移即可,时间复杂度 $O((n+m)\log n)$。
1 |
|
「解题报告」Codeforces Round 669 (Div. 2)
https://big-news.cn/2020/09/09/「解题报告」Codeforces Round 669 (Div. 2)/



