浙江集训day1模拟
Previous:
pts : 100 + 100 + 100 + 0 = 300
好菜(
Solution:
T1:一个序列 $a$ 代表 $n$ 个袋子里的金币数,你可以随意移动金币,你的目的是偷走金币,但不能让任何一个袋子为空,只要你操作后,任意的 $a_{i-1} + a_{i}$ 与原序列的 $a_{i-1}+a_{i}$ 相同,就不会被发现,问最多偷走多少金币。
分析:肉眼观察可以发现,我们最后肯定得到的是一个形如 $-k,+k,-k,+k.....+k,-k$ 的式子,可以发现序列必须为奇数,那么答案就是奇数位数字最小值减一,因为不能为空。
T2:一堆操作,每次把序列中的一个数扔到最前面,求最后的序列。
分析:这题,大力链表就行,倒序存储操作输出也行,然后居然有佬用(FHQ TREAP)不懂,不会,膜拜。
T3:原题
分析:话说这怎么是个黑啊我这种都切了。
首先我们发现,对于最优解的一条直线,我们总能把他挪一挪,动一动,让他在一个经过线段的左端点上。
考虑把坐标系转 90° ,然后枚举区间左端点,再枚举区间,记录左端点与当前区间两个端点连线的斜率,那么我们可以得到一堆关于斜率的区间,那么就是找点在区间的交集里并且价值最大,区间价值就是油量,然后双指针移动一下记录答案找个最大值就行了(实在是懒,但是思路就这样)。
下午就要开始断网断手机的原始人生活咯(悲