昨天晚上打了div3 1096, 写了4题,感觉发挥挺好的
Koshary(a)
至多走一次短步,就是走一次或者走零次
- 如果走一次:前面长步必须到达 \((x,y-1)\) 或则 \((x-1,y)\) ,一次长步只能移动2,那么这些坐标就必须是 2 的倍数
- 如果一次不走,就是直接长步到达 \((x,y)\) ,二者是均 2 的倍数
Party Monster(b)
题目的关键点在于发现删除后可以任意放回去
那么我们直接全部删除,再按最优策略放回,那么能否合法只需要判断左右般括号数量是否相同即可
Snowfall(c)
如果有 6 或 6的倍数, 则其所在区间乘积一定可以整除,应该放在端点,构成子区间最少
其实放哪里都无所谓好像
同理我们要把乘积得到 6 的倍数的子区间最小长度尽可能大,这样其参与的区间数量就少一些
想到之前写的一道牛客,10 分解为 25,6 还可以分解为 23,看2,3因子数量,有的尽量放在两端,2,3分开
nnd这一题样例错了
Palindromex(d)
对于单个元素构成的回文串我们不考虑,其 mex 最大就是 1
想要mex大一点,我们必须把0包含进去,然后是1,2,3,...
有三种情况:
- 两个零及其之间元素构成回文
- 左边零单独成回文
- 右边零单独成回文
然后各自向两边延申,找出最大的 mex
关键是如何快速求 mex:使用 set 记录未出现过的数字,每次求 mex 取首位即可
一个任意数组,其mex的最大值是其长度;
此题中因为重复出现,mex 最大值只能是 n
然后我们就是分别讨论三种情况然后一直取最小值即可
场上做出来d还是很开兴的,虽然只是div3
