AtCoder Regular Contest 073~077
| C | D | E | F | |
|---|---|---|---|---|
| ARC073 | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) | \(\color{red}{\texttt{-}}\) | \(\color{red}{\texttt{+}}\) |
| ARC074 | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+1}}\) | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) |
| ARC075 | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) |
| ARC076 | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+2}}\) |
| ARC077 | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) | \(\color{green}{\texttt{+}}\) | \(\color{red}{\texttt{+}}\) |
| \(\color{green}{\texttt{+}}\):赛时通过 | \(\color{red}{\texttt{+}}\):赛后通过 | \(\color{gray}{\texttt{+}}\):未知 | \(\color{red}{\texttt{-}}\):嘴巴 |
AtCoder Regular Contest 073
D. Simple Knapsack
考虑枚举选了 \(t\) 个。显然这些至少有 \(w_1t\) 的大小,直接从 \(W\) 中减掉。
但是这样背包还是会很大啊。注意到此时所有物品大小都是 \(\{0,1,2\}\),总大小只有 \(3n\)。复杂度 \(O(n^4)\)。
提交记录
E. Ball Coloring
考虑我们无论如何最小值和最大值一定会出现在式子里,不妨枚举它们是否同一颜色。如果是的话就是 联合省选2021D1T1,否则也差不多就是一个双指针。
有点屎,代码咕咕咕了。
F. Many Moves
考虑 dp。设 \(f_{i,j}\) 表示做了前 \(i\) 次转移,另一个棋子留在 \(j\) 的最小方案。
即:
然后第一部分显然是一个定值,第二部分考虑对 \(q_{i+1}\) 左右分类讨论,本质上是一个区间最小值。
直接线段树处理即可。
初始情况特殊处理。复杂度 \(O(n\log n)\)。
提交记录
AtCoder Regular Contest 074
E. RGB Sequence
考虑非常暴力的思路:对于一个序列,固定右端点,左端点向左移动过程中颜色数必然是不降的。
所以用 \(f_{i,j,k}\) 表示当前在 \(i\) 位置,左端点为 \(j\) 时开始两种颜色,为 \(k\) 时开始三种颜色。可以发现所有限制可以通过这三个信息判断是否合法。
然后枚举下一个颜色是哪一种(为了方便可以枚举是 \(i/j/k\) 位置的颜色),直接转移即可。复杂度 \(O(n^3)\)。
提交记录
F. Lotus Leaves
考虑行列建点,可以发现一个荷叶的作用其实只有从某一行转移到某一列。
转化成最小割模型,直接跑流即可。复杂度 \(O(n^3)\)。
提交记录
AtCoder Regular Contest 075
E. Meaningful Mean
考虑整体减 \(k\),就变成 \(\geq 0\) 子区间个数。转化成区间大于等于某个数个数。
可以用值域线段树,当然也可以 pbds 直接水。复杂度 \(O(n\log n)\)。
提交记录
F. Mirrored
先枚举长度 \(l\)。这样对于 \(a_i\) 和 \(a_{i-l}\) 其实我们只关心他们的差 \(d_i\)。
考虑两个数的差其实就是 \(\sum d_i(10^{l-i}-10^i)\)。其中 \(d_i\in[-9,9]\),毛估估一下不会有太多可能,事实上每个位置最多只有两种 \(d_i\) 满足条件。
暴力枚举,复杂度 \(O(2^{\lg V}\log V)\)。
提交记录
AtCoder Regular Contest 076
E. Connected?
手模一下可以发现只要两端有一个不在边界上,这条线就一定可以连上。所以只要考虑在边界上的情况。
然后就是很经典的问题了。考虑拆环为链,可以发现无论怎么拆,相交线的永远相交,不交的线永远不交。最后判一下这些区间有无相交关系即可。
提交记录
F. Exhausted?
考虑用 Hall 定理。可以发现在这里子集 \(S\) 对应的节点数为 \(\min\{m,\max L(S)+m-\min R(S)\}\)。
首先考虑最外面那个 \(m\),这与 \(S\) 无关,那么一定让 \(|S|\) 最大即为 \(n\)。换句话说要求答案至少为 \(\max(n-m,0)\)。
那么将 \(m\) 拆掉后,剩下的式子中 \(L(S)\) 和 \(R(S)\) 就可以分开算了。不妨令 \((L,R)\) 表示的区间为 \([-L,m-R]\),容易发现两者等价。
这样就变成一个经典问题:有 \(n\) 个区间,每个区间要求选择一个点,不同区间不能选同一个点,问有几个匹配。
经典的构造是:按区间右端点排序,每个区间取能取的点中最靠左的点,不能取即没有匹配。证明考虑对增广路径的情况分类讨论,可以得到不存在增广路径。
用线段树/set 维护。复杂度 \(O(n\log n)\)。
提交记录
AtCoder Regular Contest 077
E. guruguru
首先先认为每次操作都是按 forw,贪心地想,如果 fav 按钮位置在 \(a_i\) 到 \(a_{i+1}\) 的路径上,那么一定会先摁这个按钮,收益是 \(a_i\) 到这个按钮的位置的步数 \(-1\)。显然这构成一个公差为 \(1\) 的等差数列,差分一下最后推一遍即可。
复杂度 \(O(n)\)。
提交记录
F. SS
可以发现 \(f(SS)=STST\),其中 \(T\) 是 \(S\) 最短的 period。再模拟一下可以发现 \(f^2(SS)=STSST\),令 \(g(S)=ST\),可以发现 \(g^i(S)=g^{i-1}(S)+g^{i-2}(S)\),可以发现是斐波那契数列的形式。直接暴力递归处理复杂度就是 \(O(n\log V)\) 的。

浙公网安备 33010602011771号