Loading

题解-CF878

CF878

我颓了一个周末,因为我已经退役了。

正在周末快结束的时候,我突然感觉我不能就这么退役,所以我迅速地开了一场 vp——

然后做了个 A 题去吃中饭了。

回来补题的时候发现我的排名竟然有 Div.1 的 \(200\) 名,开始意识到了这是个毒瘤场。


CF878A Short Program

luogu

好题!对于每一位考虑,发现最后有 \(4\) 种情况:

\(0\),是 \(1\),与原来相同,与原来不同。

找到每个位的情况,然后用 \(3\) 次操作一并完成即可。

aclink


CF878B Teams Formation

luogu

毒瘤题!这是一道 mifafaovo 场上不会做的黄题 /qiang

题目意思是有一个长度为 \(n\) 的序列,重复写 \(m\) 次,每遇到连续 \(k\) 个相同的数就消掉,问最后剩多少个数。

先不考虑有多个,先消掉一个内部的:维护一个栈,每次加进来的数,如果和栈顶元素相同,就让栈顶值 \(+1\)

如果栈顶值到 \(k\) 了,就把栈顶元素消掉。如果新数和栈顶不同,就在栈顶新加一个元素。

然后考虑两个序列直接消,用序列的头和尾消模拟。

如果头尾元素相同,值相加,如果 \(\ge k\) 消掉。

如果消掉以后还有剩余,那么消不下去了,直接返回答案。

否则一直消,一直消……最后如果还留下来,那么肯定栈里只有一个元素了。

如果所有这种元素 \(m\) 组连起来能是 \(k\) 的倍数,那么答案为 \(0\),因为全序列两端能以同样的方式消掉。

否则两端会留着,中间会留下剩余。

aclink


CF878C Tournament

luogu

神题!就是动态加 oier,每次问有多少个没有被完全单调队列的。

有一种好的理解方式是,把每个 oier 看成一个点。

如果一个 oier 在某个方面可以吊打另外一个 oier,那么连一条有向边。

然后把这个图缩点,可以得到一个拓扑图,图中存在一条链,等同于拓扑序,且拓扑序固定。

考虑表示一个缩点,只需要记录每个运动的最小值和最大值。那么每个缩点应该是完全吊打比它蒻的缩点的。

答案是最强的缩点的点数。

考虑维护一棵平衡树,每个节点是一个缩点。

每次新加一个节点,就把所有可以和它作为一个缩点的点删掉,然后合并到自己上,再放回去。

同时维护每个缩点内的 oier 数量。

这东西可以利用高超的重载运算符加 set 解决。

aclink


CF878D Magic Breeding

luogu

或许是套路题,不太懂的锰锌被这题搞晕了,黑红名不是人,场上竟然一堆做出来……

\(k\) 状压:设 \(f(i,s)\) 表示对于每个属性,\(s\) 中是否一定存在一个 \(\ge i\) 且与 \(i\) 相关的。

初始化 \(0\le i\le k,i\in s:f(i,s)=1\),因为只有这些能产生贡献???

对于一个取 \(\max\) 的新生物,只要两个先辈的 \(f(i,s)\) 中有一个 \(=1\)\(=1\)

对于一个取 \(\min\) 的新生物,只要两个先辈的 \(f(i,s)\) 必须都要 \(=1\)\(=1\)

所以用一个 bitset 维护这个元素为集合的集合,\(\max\to {\rm or}\)\(\min\to {\rm and}\)

然后统计答案的时候,对于这个属性,从大到小枚举来源,如果所有比当前来源这个属性大的来源构成的集合存在大于当前生物且与当前生物相关的,这个来源就是答案。

比如两个集合并了,那么大的会被先枚举到,然后它就是答案。

比如两个集合交了,那么小的会先被枚举到,然后它就是答案。

有点玄学,多手玩多感性理解把。

aclink


CF878E Numbers on the blackboard

luogu

假设对全局求最值,每个数对答案的贡献是 \(2^{k_i}\)

那么只要满足 \(k_0=0\)\(i>0:k_i>0\)\(k_i\le k_{i-1}+1\) 就是合法的。

然后就不会了。发现最后 \(k\) 分成多段从 \(1\) 上升的上升子序列是最优的,那么可以先分好再查询。

如果一个数是负的就自己一段,否则往前并,如果又转正,再往前并。用并查集维护。

然后每次查询可以维护一个前缀和即可。

不,这是错的,很可能对于当前右边界两个块没有合并,但是最后并了。

所以要把询问挂到右端点上。然后由于块不会分裂,所以可以动态维护另一个前缀和。

关于权值的爆 int 处理:设 \(W=2\times 10^9+1\)

只需要判断是否 \(\ge W\),如果 \(\ge W\) 就变成 \(W\)

因为前面所有负数映射到这位的和不会超过 \(-2\times 10^9\)

而且不会有两个负块合并,所以一个块不会小于 \(-10^9\)

调这题把我智降得绝对值变大了好多 /kk

aclink


\[\Huge\rm --AFO-- \]

posted @ 2021-01-25 08:53  George1123  阅读(451)  评论(8编辑  收藏  举报