record 1.22-1.24

zroi Day6 A

这一场我怎么这么唐???

推式子

\[\begin{aligned} ans&=\sum_{i=1}^n\sum_{j=1}^n\frac{ij}{(i,j)}\\ &=\sum_{d=1}^{\min(n,m,a)}d\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}ij[(i,j)=1]\\ &=\sum_{d=1}^{\min(n,m,a)}d\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}ij\sum_{x\mid (i,j)}\mu(x)\\ &=\sum_{d=1}^{\min(n,m,a)}\sum_{x\mid (i,j)}\mu(x)dx^2\sum_{i=1}^{\lfloor\frac n{dx}\rfloor}i\sum_{j=1}^{\lfloor\frac m{dx}\rfloor}j\\ \end{aligned} \]

对后面的东西数论分块,相当于我们要求 \(dx\in[L,R]\) 内的时候,\(\mu(x)dx^2\) 的和。

这个,我们把询问离线,按 \(a\) 排序,每次暴力树状数组加入即可。

复杂度 \(O(n\log^2n+q\sqrt{n}\log n)\)

zroi Day6 B

我们先随便推推 \((x,y,z)\rightarrow (a,b,c)\) 的条件。你发现记对应位置的差是 \(u,v,w\),那么要求 \(u+v\ge 0,v+w\ge 0,w+u\ge 0\),并且 \(u,v,w\) 奇偶性相同。

换个元,你发现就是要求在奇偶性相同的组当中,求三维偏序。

这不是我们 1 log 三维偏序吗?这个题满足任意两个三元组不同,但是并不满足每个维度上都是一个排列。

场上我到这里就摆了,gank 了一个三维偏序上去。

事实上,我们把每个维度上的序,改成按这个维度为第一关键字,其它两个维度为二三关键字排序,之后的结果,即可。

这个做法似乎并不可以扩展到有相同三元组的情况。

zroi Day6 C

这个 C sol 里给了神秘的拉格朗日反演加上一堆奇怪的 GF。但是好像有简单的做法。

第一个做法我场上想出来了一点。

就是说,我们观察发现,这个串一定可以被唯一拆分成 \(W_1)W_2)\dots )W_k(W_{k+1}(\dots(W_n\),其中每个 \(W_i\) 都是合法括号串。这样拆分是容易的,我们只需要正常扫一遍,把能匹配上的都匹配上就行了。容易知道,这是最大的解。

那我们现在就是想要对一个 \(k\),去枚举有多少个左右括号对 \(m\),然后来算这个东西。

我们不妨记 \(f(n,m)\) 表示 \(n\) 个空位,有 \(m\) 个左右括号对插入成合法括号串,可以有空位,的合法方案数。

那我们在 \(k\) 位置的答案就是

\[ans_k=\sum_{m=0}^{\min(k,n-k)}f(n-2m+1,m) \]

这个东西,跟 \(k\) 没多大关系。我们接下来想知道 \(f(n,m)\) 能不能 \(O(1)\) 算。

事实上,记 \(C(x)\) 为 Catlan number 的生成函数。

\[f(n,m)=[x^m]C^n \]

然后我不会了。

第二个方法好像是你大眼观察,发现这个答案大概就是 \(n-2mn+sum\)。然后可能要做一些反射容斥。

arc170 C

为啥这种东西想不出来啊?场上一直在想一些神秘容斥的东西,大概就是你考虑先钦定下来每个 mex 的取值,然后算方案数。错完了。

真正的做法我们根本不关心 mex 位置到底取什么,我们只需要知道到了这个位置取的数是唯一确定的就行了。接下来就是要保证别的地方不能成为 mex,并且 mex 位置的值域要在 \([0,M]\)

这个时刻你可能又要去记录一些奇怪的东西了,但注意到我们只关心 mex 值域是否小于等于 \(M\),所以我们只需要记录当前使用了 \([0,M]\) 中多少种数。然后我们正常做 dp 就可以了。

arc170 D

这个题我们有一个很清晰的思路。先假装知道前两次选择的结果 \((x,y)\),看看 Alice 该怎么选 \(z\)。然后再根据 Alice 的这个策略,让 Bob 去选 \(y\)

那 Alice 已经知道 \((x,y)\) 了,接下来它会选择的 \(z\) 满足 \(|x-y|<z<x+y\)

那 Bob 已经知道 \(x\) 了,接下来它要选 \(y\)。我们根据 \(x,y\) 的大小进行一些讨论。

如果 \(y<x\),那么 \(x-y<z<x+y\),你发现这是个以 \(z\) 为中心的区间,那肯定半径 \(y\) 越小越好,所以我们会选择最小的 \(y\)

如果 \(y>x\),那么 \(y-x<z<y+x\),这是个在移动的窗口,我们希望能找到一个 \(z\),使得这个窗口里面没有值。最暴力就是你枚举之后 check 一下,这个是 \(O(n^2)\) 的。

我们仍然要枚举 \(x\),然后你发现 \(y<x\) 是容易判断的,问题是怎么判断 \(y>x\)。这个其实也好做,对每个 \(y\) 维护它能承受的最大半径,然后你枚举一个 \(x\) 相当于是会修改一些人的最大半径。你考虑修改之后,谁的半径最大,只改这一个人的就可以了。

所以这个题,就做完了,感觉比 C 简单。

这个题有很厉害的做法。

我们把 Alice 的一张卡称作好的,当且仅当,Alice 选这张卡,Bob 选最小的卡,这时 Alice 可以获胜。

容易发现 Alice 想赢就必须选好的卡。同时发现 Alice 的最优策略是选择最大的好的卡。

考虑最大的好的卡是 \(a\),另外一张是 \(a'\),Bob 选了 \(b\)。我们要证明,如果 \(a\) 不行,那么 \(a'\) 不行。这样就说明选 \(a\) 一定不劣。

你考虑如果 \(b\le a\),这个时候 Alice 选出来跟 Bob 选最小卡的时候一样的卡就可以获胜。

如果 \(b>a\),这时如果 \(a\) 输了,那么 \(a+cho(a,b')\le b\)\(a'+cho(a',b')\le b\)\(a'\) 一定会输。

哎呀我这个说的不是很严谨,感受一下。

posted @ 2024-01-24 17:07  PYD1  阅读(6)  评论(0)    收藏  举报