题解-CF878
作者:互联网
我颓了一个周末,因为我已经退役了。
正在周末快结束的时候,我突然感觉我不能就这么退役,所以我迅速地开了一场 vp——
然后做了个 A
题去吃中饭了。
回来补题的时候发现我的排名竟然有 Div.1 的 \(200\) 名,开始意识到了这是个毒瘤场。
CF878A Short Program
好题!对于每一位考虑,发现最后有 \(4\) 种情况:
是 \(0\),是 \(1\),与原来相同,与原来不同。
找到每个位的情况,然后用 \(3\) 次操作一并完成即可。
CF878B Teams Formation
这是一道 mifafaovo
场上不会做的黄题 /qiang
。
题目意思是有一个长度为 \(n\) 的序列,重复写 \(m\) 次,每遇到连续 \(k\) 个相同的数就消掉,问最后剩多少个数。
先不考虑有多个,先消掉一个内部的:维护一个栈,每次加进来的数,如果和栈顶元素相同,就让栈顶值 \(+1\)。
如果栈顶值到 \(k\) 了,就把栈顶元素消掉。如果新数和栈顶不同,就在栈顶新加一个元素。
然后考虑两个序列直接消,用序列的头和尾消模拟。
如果头尾元素相同,值相加,如果 \(\ge k\) 消掉。
如果消掉以后还有剩余,那么消不下去了,直接返回答案。
否则一直消,一直消……最后如果还留下来,那么肯定栈里只有一个元素了。
如果所有这种元素 \(m\) 组连起来能是 \(k\) 的倍数,那么答案为 \(0\),因为全序列两端能以同样的方式消掉。
否则两端会留着,中间会留下剩余。
标签:CF878,相同,题解,元素,栈顶,如果,消掉,序列 来源: https://www.cnblogs.com/George1123/p/14323475.html