2023-1-31 #31 喜欢如落幕后放映机繁忙空转
——COP《Reeeee》
171 AGC059E Grid 3-coloring
一个很脑洞的想法,我们构造一个矩阵,使得其与颜色模 \(3\) 同余。
若能构造一个这样的矩阵一定能得到答案,而可以发现一个答案矩阵也能构造出一个数字矩阵。
证明:按照 \((i,j)\) 字典序填数,如果 \(i=1\) 或 \(j=1\),那么可以根据其邻居填数,否则若其两个邻居颜色相同,则正常填色,否则填其左上方格子的颜色。
尝试写一个这个矩阵存在的必要条件:外围存在填数方案且外围相对的数之间差绝对值不超过 \(n-1\)。
事实上这也充分,我们直接写出 \(a_{i,j}=\max\{a_{1,j}-(i-1),a_{n,j}-(n-i),a_{i,1}-(j-1),a_{i,n}-(n,j)\}\),因为四个数都模 \(2\) 同余 \(i+j\),因此相邻奇偶性一定不同,而四个数值变化不超过 \(1\),因此差一定为 \(1\)。
172 P8125 [BalticOI 2021 Day2] The short shank
我们可以把人分成两类,造反事件在 \(T\) 之前的与在 \(T\) 之后的,分别成为激活点和非激活点。
对于一个非激活点 \(x\),可以找到一个最靠右可以传播到他的激活点 \(l\),那么 \(x\) 不被激活当且仅当没有 \(l\) 或 \([l,x]\) 中有隔板。
一个性质:\([l,x]\) 区间要么不交,要么包含,因为靠右的 \(x\) 对应 \(l\) 一定能激活靠左的 \(x\)。
那么可以对区间建出树的结构,长链剖分取前 \(d\) 长链即可。
173 NFLSPC #2 Polynomial
最后的操作序列形如 \((((x^{k_0}+c)^{k_1}+c_1)^{k_2}+\cdots+c_m)^{k_m}\)。
先假设 \(k_0=1\),那么可以归纳证明 \([x^{n-1}]Q(x)=nc\)。
得到 \(c\) 之后,我们将 \(Q(x)\) 平移 \(c\) 位来还原,这是一个卷积形式,我们可以得到 \(Q'\)。
我们将 \(Q'\) 所有非零系数的下标取 \(\gcd\) 可以得到 \(k_0\),若 \(k_0=1\) 则无解,否则继续做下去。(每次 \(n\) 至少减半)
复杂度 \(O(n\log n)\)。
174 NFLSPC #3 星
直接给出构造:对于所有 \(-\frac n2\leqslant x\leqslant\frac n2-1\),取 \((x,x^3)\),方案数可做到 \(\frac{n^2}{8}\) 级别。
我们发现对于 \(a+b+c=0\),\((x-a)(x-b)(x-c)=x^3+(ab+bc+ac)x-abc\),因此 \((a,a^3),(b,b^3),(c,c^3)\) 均在 \(y=-(ab+bc+ac)x+abc\) 上。
任取 \(x<0<y\),那么 \(-x-y\) 一定在范围内,所有 \(-x-y=0\) 的三元组会被统计一遍,所有 \((x,x,-2x)\) 型三元组会被统计一遍,其余三元组会被统计两遍。
那么答案不少于 \(\frac{(\frac n2)(\frac n2-1)+\frac n2-\frac n2}{2}=\frac {n^2}8-\frac n4\)。
175 NFLSPC #3 计算几何
给出结论,答案为 \(2n-2-\) 凸包点数。
先证明这是答案下界。
我们每次取出点集的凸包,并将这些点去掉,重复做直到所有点被去掉。我们能得到 \(k\) 个凸包 \(l_1 \cdots l_k\)。
对于相邻层之间三角剖分,可以剖出 两层凸包点数和 个三角形,最内部的凸包 \(l_k\) 也进行三角剖分,于是我们能得到 \((l_1+l_2)+(l_2+l_3)+\cdots+(l_k-2)=2n-l_1-2\) 个不交三角形,每个三角形至少需要一个红点。
接下来给出构造。
我们随机一个与所有蓝点直线不平行的向量 \(P\)(不妨令 \(|P|=eps\)),将所有点平移 \(P,-P\),取出这 \(2n\) 个点,这个点集一定合法。
原因是,对于任意三角形,三个角与三个对顶角恰好能覆盖一个圆周所有的角度(除了三角形的三边对应角度),向量 \(P\) 一定会落在这些角的范围内。
但是 \(2n\) 还不够,注意到有 \(l_1+2\) 个红点落在了凸包外,我们可以将其删掉。(凸包上每个点会平移出至少一个凸包外的红点,凸包最两侧的点平移出的两个点都会在凸包外)
176 P8946 The Lost Symbol
直接列 dp 计算 \(f_{i,k}\) 表示前 \(i\) 个数运算出 \(k\) 的方案数。
因为第一个数大于第二个数就运算出 \(0\) 了,我们可以默认 \(>m\) 的数为 \(m+1\),而 A/C 运算数字膨胀速度很快,因此我们可以暴力进行一部分转移。
具体地,若第一个数 \(>1\),那么 A 运算只有至多根号种;若第一个数 \(>1\) 且与后面的数差大于一,C 运算也是根号的量级,计算可知 A/C 分别 \(393,1195\) 种转移。
那么我们需要快速处理:
A/C x y(x>y)
:全局 \(\sum (i-1)a_i\),单点修改;A/C 0 x
:单点求值,单点修改;A/C 1 x
:单点求值,全局加;C x x
:全局求和,单点修改;C x x+1
:整体 shift。
那么需要支持的操作就有:大量单点修改,单点求值; \(O(n)\) 次全局和、全局带权和、全局加、全局清零、整体 shift。
由于都是单点/全局操作,直接维护 dp 序列,维护一下加法/清零/shift 标记,记录一下每个位置上一次操作的事件就好了!
所有操作都可以 \(O(1)\) 完成。
177 2020 小米邀请赛 决赛 A Rikka with Game
神秘题。
可以得到一个状压 dp:\(f_{S,x}\) 表示当前剩余集合 \(S\),目前“龙”是 \(x\),游戏是否会结束。
\(f_{S,x}\) 为真当且仅当 \(S\) 中 \(x\) 所有非邻居 \(y\) 都满足 \(f_{S-\{x\},y}\) 为假。
这事实上等价于在 \(G\) 的补图上做一个博弈,棋子初始在 \(x\) 上,先后手轮流动一步,不能经过走过的点,不能动就输,求谁能赢。
经典问题,结论为先手必胜当且仅当所有最大匹配均包括 \(x\),单纯删点跑带花树可以 \(O(n^4)\),好像魔改一下带花树就能 \(O(n^3)\),但我不会带花树,所以我不知道!
178 2020 小米邀请赛 决赛 B Rikka with Maximum Segment Sum / CF1787I Treasure Hunt
首先说一下 CF1787I 的前几步转化:
首先 \(p<l\) 或 \(p>r\) 的限制可以去掉,因为若 \(p\in[l,r]\) 则可以找到更优秀的最大子段和。
然后就可以把最大前缀和和最大子段和拆开了,最大前缀和随便用个单调栈很容易线性计算。
然后两道题就一样了。
最大子段和的计算考虑分治,合并是一个 \(\max(s_a+p_b,\max(t_a,t_b))\) 形式的,直接二维数点可以做到 \(O(n\log^2 n)\)。
我们有结论:\(t_a-s_a\) 不减,得到这个结论后两维均单调,我们双指针就好了,复杂度 \(O(n\log n)\)。
结论的证明:
上面的结论往下分析一步可以得到 \(l>p\) 或 \(r=p\),若 \(r=p\),往后加一个数字会使得 \(\Delta t_a=\Delta s_a\)。
若 \(l>p\),我们分讨是否会更新最大前缀和:
- 若更新,\(p\) 与 \(r\) 均会更新为序列结尾,而 \(\sum_{i=p+1}^r a_i<0\)(否则 \(p\) 不是最大前缀和),因此 \(\Delta t_a>\Delta s_a\)。
- 否则 \(\Delta t_a\geqslant 0,\Delta s_a=0\)。
179 2020 小米邀请赛 决赛 L Rikka with Generals
有点神秘!
我们直接嗯上 dp:\(f_{i,j}\) 表示考虑了前 \(i\) 个人,其中第 \(i\) 个人在 \(j\) 的方案数,转移可以分讨 \(i\) 是否和 \(i+1\) 交换:
- 不交换:递归到 \(f_{i+1,A_{i+1}}\)。
- 交换,且 \(A_{i+1}\) 与 \(j\) 相邻:递归到 \(f_{i+1,j}\)。
- 否则,\(i+1\) 交换到了某个邻点,我们设 \(k\) 为 \(i+1\) 之后第一个所在城市与 \(j\) 相邻的下标,那么 \(i+1\cdots k-1\) 都会与 \(k\) 交换,最后 \(i+1\) 与 \(i\) 交换,判一下合法就可以递归到 \(f_{k,A_{k-1}}\)。
每个点能到的点数是 \(O(n)\) 的,判合法可以二分,记忆化搜索就好啦。