Examples

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)\) 的,判合法可以二分,记忆化搜索就好啦。

posted @ 2023-01-31 15:00  xiaoziyao  阅读(124)  评论(1编辑  收藏  举报