其他分享
首页 > 其他分享> > 题解-CF878

题解-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


标签:CF878,相同,题解,元素,栈顶,如果,消掉,序列
来源: https://www.cnblogs.com/George1123/p/14323475.html