[DMY]2024 NOIP 模拟赛 Day 7
跟昨天一样废,几乎全在肝T1,剩下的题几乎没碰,但是最后不仅高精没想完 upper_bound
等的全部实现,而且还有个煞笔玩意全程一直在狗叫,所以我现在烦得很。
赛时
一看 T1,构造题。
对着条件推了 1h,发现除了暴力啥都不会。
上个厕所回来,我发现题目上的 \(a,b\) 数组本质上应该满足的条件是 \(a_1\ge a_2\ge \cdots\ge a_k\) 和 \(b_1\le b_2\le \cdots \le b_k\)。
先预处理了 \(a\) 和 \(b\) 两个数组的全部对应值。一开始贪心地想每次从 \(a\) 中选最大,然后二分从 \(b\) 里面找满足条件的,但是写完以后发现样例过不去。想了想发现手推的是假的。
又想了 1h,发现我可以主要考虑 \(a\) 数组,对于 \(b\) 数组我可以依次从前往后做一个类似三角形结构的覆盖过程,每次都对当前点和以后的所有点进行操作,这样直接就能满足 \(b\) 数组推出来的单增条件。
具体的,每次对于当前的 \(n\) 选择最大能够整除的 \(b\),对于除过的 \(n\) 二分找到最大的满足条件的 \(a\),然后让 \(n\) 去减 \(a\) 后继续递归操作。其中除 \(b\) 的操作其实也就是对当前及以后的所有 \(n\) 进行操作。
对于输出的话可以记录一个累乘的 \(2\) 的次数,最后跟着 \(3\) 一块计算出来。
写完大概是 10:20,过了 \(n=10^{18}\) 的点。
本来想继续想,但是我发现我写的递归形式特别不好用高精度处理,各种函数全都需要写,所以仙姑了。
从 10:20 到 11:12,我写完了 T2T3 的暴力分,发现 T4 看不懂,意识到现在最好得分的就是 T1 了。
想了想认为正解应该就是高精度。但是学OI到现在只写过3道高精题目的我对此一窍不通,所以打算尽可能减少需要高精的运算数量。
在原来的代码里面套上高精显然会炸,而且传参也不会传,所以我改成了线性平推赋值的方式,然后发现时间已经来到了 11:20。
根据代码统计了一下,我发现我需要实现高乘低/高,高模高,判等,高除高,判大小,高减高这几个操作。
然后我就弃了。
剩下的二三十分钟去想了想 T2,发现了一个优化的暴力,最后交的时候发现直接挂了,赶紧再交了个原来的暴力上去,就去吃饭了。
赛后
T2 发现自己的暴力是最低分,并且有一堆人过了 T2,唐了。