2.6 響け恋の歌 ——ARC110~112

今天是《小小恋歌》赞助周期的最后一个日志。下一场就换赞助!下场赞助已经定了捏!

ARC110

ARC110D Binomial Coefficient is Fun

考虑组合意义。我们把 \(M+1\) 分成 \(N\) 个非零数。考虑每个数加一。就变成了在 \(M+N\) 个空隙中插 \(N\) 个板子,然后在每两块板子间再插 \(A_i\) 块板子。所以答案就一个组合数。

ARC110E Shorten ABC

考虑 \(A=1\)\(B=2\)\(C=3\)。于是每次就是把两个合并成其异或值。于是 DP,看怎么合并异或值。\(f_i\) 可以由其最近的 \(j\) 满足 \([j+1,i]\) 的异或值为 \(x\),然后由 \(j\) 转移过来。

ARC110F Esoswap

恶俗 swap。实际上我们从 \(n\to 1\) 每个点 \(n\) 次即可。模拟一下发现就是对的。

ARC111

ARC111D Orientation

题目保证有解,于是就很简单。对于边 \(u,v\),如果 \(c_u\neq c_v\),那么 \(u,v\) 的指向就清楚了;否则 \(u,v\) 就是同一 SCC。

ARC111E Simple Math 3

二分到一个 \(k\),使得 \(A+Bi\)\(A+Ci\) 的差距小雨 \(D-1\)。于是 \([(A-1+Ci)/D]-[(A+Bi)/D]\le 1\)。于是查询等于的个数,只需查询两者差之和就行了。

ARC111F Do you like query problems?

不,我不喜欢。首先做一个 DP,\(f_x(i,j)\) 表示位置 \(x\) 的数 \(i\) 步变成 \(j\) 的概率。容易发现只有 \(j=0\)\(j>0\) 两种不同的取值。于是写出转移式子,然后推一下通项。反正就是推一堆式子,最终枚举每个位置,计算贡献即可。

ARC112

ARC112D Skate

考虑同行同列组成连通块,且初始时边角点就为 #。并且我们要么满足行全覆盖,要么满足列全覆盖。考虑分别计算。比如行覆盖。于是我们以行列为点,看行组成多少个连通块,那么答案就为连通块个数 -1。列也算一下就i行了。

ARC112E Cigar Box

考虑对于每个元素,其有效操作只会有一步。在一次有效操作前可以有很多次无效操作。考虑先 DP 出 \(f(i,j)\) 表示(从后往前)用了 \(i\) 步,有 \(j\) 个元素有了有效操作。然后我们在看实际上有操作的在最终串中一定形成前后缀,且中间那部分递增。于是再枚举一下这个前后缀即可。

ARC112F Die Siedler

太厉害的题目。首先我们可以把所有位置上的数都反推到 \(j=1\) 位置,最终形成一个数 \(X=\sum c_j(2(j-1))!!\),代表一个局面。那么我们每次可以对 \(X\) 加上一个数 \(x_i\),或者减去一次完整循环(\(y=(2n)!!-1\))。根据裴蜀定理,最终局面 \(X'\) 一定和初始局面 \(X\)\(d=\gcd(x_i,y)\) 同余。如果 \(d\) 很大那么可以直接 \(O(ny/d)\) 暴力枚举每一种 \(X'\)。否则我们考虑 \(\sum c_jb_j\equiv X\pmod d\),是一个同余最短路模型,可以 \(O(nd)\)。由于 \(<\sqrt y\) 的素因数 \(d\)\(1.2e7\) 级别所以就做完了。

posted @ 2024-03-26 08:26  LarsWerner  阅读(9)  评论(0编辑  收藏  举报