浙江集训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° ,然后枚举区间左端点,再枚举区间,记录左端点与当前区间两个端点连线的斜率,那么我们可以得到一堆关于斜率的区间,那么就是找点在区间的交集里并且价值最大,区间价值就是油量,然后双指针移动一下记录答案找个最大值就行了(实在是懒,但是思路就这样)。

代码

下午就要开始断网断手机的原始人生活咯(悲

 

posted @ 2022-07-05 11:41  Xu_brezza  阅读(47)  评论(3编辑  收藏  举报