2021“MINIEYE杯”中国大学生算法设计超级联赛(7)
终于开补我零作用的场次了。
居然在开学前补完了。
[1001 Fall with Fake Problem]
solution
题面:给出展开字符串
做法:因为有字典序最小的条件,那么最终串肯定要是前面一部分和
背包复杂度是 bitset
优化,于是总复杂度就是
1 | //2021.8.21 by ljz |
[1002 Fall with Soldiers]
solution
题面:一个序列有
做法:容易得出最后必胜的充要条件:
而此时的
于是我们分类讨论下。
,其中 代表都是 。 这种情况下的答案显然看那两个
是否合法,合法的话答案就是 , 代表 个数,不合法就是 。 。 这种情况下我们找出右边的那个
对应的最小的 ,即 。然后从左边靠中第一个 向 移动,碰到 就停止。设总的 为 个,停止前碰到的 数量为 ,那答案就是 。左边有 同理。 。 这种情况复杂一点。我们对于右边的每一个
求出它最小的 ,即 ,记录 到 中有几个是在 出现前的 ,设为 。那答案就是 ,其中 表示 是第几个 。
看似好复杂,冷静一下发现都是单调的,再冷静一下发现这些信息都是容易用线段树维护的。总时间复杂度
代码实现可能和上述讲述不符。
1 | //2021.8.21 by ljz |
[1003 Fall with Trees]
solution
题面:我们首先规定树中所有具有相同深度的节点在平面上也具有相同的
- 满二叉树。
- 相邻两层节点的
坐标差为常数。 - 同一层次上两个相邻节点的
坐标差为常数。 - 每个节点的
坐标是其子节点 坐标的平均值。
我已经画出了这个二叉树的根节点和它的左右两个子节点。 现在打算画出总共个层次,他想知道这个完美二叉树的所有节点的凸包的面积是多少。
做法:。。。一心想着推导每一层最左端点的值,然后就吐血了。
实际上直接推导两层之间的深度关系,就会发现是个等比数列了。而最终答案就是所有梯形面积之和,发现还是个等比数列求和。所以就
1 | //2021.8.17 by ljz |
[1004 Link with Balls]
solution
题面:
做法:写出
想怎么做就怎么做,因为这题
1 | //2021.8.18 by ljz |
[1005 Link with EQ]
solution
题面:有
做法:第一个人坐下来后,肯定会选择两边的端点(如果可以)。然后整个就被拆成两段,每段的两段都有人坐了。发现之后每个人肯定会坐中间的位置,于是总的人数一定是唯一的。因此可以先求出
代码我偷懒直接
1 | //2021.8.18 by ljz |
[1006 Link with Grenade]
solution
题面:你在一个地方按角度随机朝一方面扔炸弹,炸弹的初始速度为
做法:先说下我看似错误但实则正确的做法。
我开始下意识认为随机一个角度可以等价于随机一个旋转角度再随机一个二维的抛物角度,这个旋转角度正好决定了抛物线在哪个面上。然后我觉得旋转角度是随机的,那每个面都是一样的,然后转成二维平面,看抛物线落点离原点的距离。接着我算出一个式子,大致是
看完题解后觉得有点奇异,它明明确实是按角度随机的啊,那我不是完全理解错误?确实如此。原因很简单,立体角
官方做法是直接考虑立体角,直接求抛物面是不容易的,所以变成人在向上动,炸弹稳定地冲。那题意就被转化成求两个球体的交中一个球体的表面积大小,这可以积分算出,于是就做出来了。
炸胡真爽。
1 | //2021.8.18 by ljz |
[1007 Link with Limit]
solution
题面:给出
对每个
做法:由于求的是函数序列的级数,所以常数部分可以去除。若
1 | //2021.8.17 by ljz |
[1008 Smzzl with Greedy Snake]
solution
题面:二维平面上有
做法:四种分十六类讨论即可,时间复杂度
1 | //2021.8.10 by ljz |
[1009 Smzzl with Safe Zone]
solution
题面:求外凸包上的点到内凸包上的点最小距离的最大值。
做法:大胆猜测一定是外凸包上的点才是答案要求的点,证明分两类讨论。
感受一下,肯定是外凸包上的点到它对面的点和边的距离是答案,而随着外凸包上的点按顺时针选过来时,对应的点和边也是按序选过来的,于是利用这种类似的单调性就可以
1 | //2021.8.20 by ljz |
[1010 Smzzl with Tropical Taste]
solution
题面:游泳池里有
给定
做法:稍作推导,即第
1 | //2021.8.17 by ljz |
[1011 Yiwen with Formula]
solution
题面:求所有子序列的和的积。
做法:求积的和是 djq 鸽鸽放在 loj 上的题,这里不赘述。
容易去考虑
所以直接取出
蛤,你问我写了啥?我啥都不想写,贺了队友代码就直接跑路喽!
多项式还是让我口胡比较好。
1 |
|
[1012 Yiwen with Sqc]
solution
题面:
做法:直接拆成前缀和即可,即
于是就是
1 | //2021.8.17 by ljz |