写在前面:
这套题无论是从题型还是解题思路上都挺不错的,但自己还是太菜了,T1都不会正解。
A. 导弹袭击
标签:
单调栈维护凸包
题解:
从$ O(n^2) $的暴力可以看出,我们关注的只是A与B的比值,
所以对于每一个导弹来说t=x/a[i]+b[i],
是一个一次函数,要求求每个位置最小的函数值,
考虑先将导弹按1/a[i]降序排序,之后用单调栈维护一个上凸包。
需要特别注意交点一样和交点<0的情况
B. 炼金术士的疑惑
标签:
高斯消元
题解:
我打的不是正解,所以在这里就口胡一下正解啦:
首先题目保证方程有解,考虑把每个方程设为未知量,
高斯消元出来一定是这样的:
对于每个在系数矩阵中非0的物质来说,都可以让一个式子对最终式子产生贡献,
魔改一下高斯消元即可
C. 老司机的狂欢
标签:
构造,LIS,倍增
题解:
显然时间满足单调性,然而check比较难想:
先把所以车按pos排序,之后O(n)处理所以车的最终位置
对于第一问,就是以最终位置为序列的LIS
对于第二问,把LIS的决策森林(深度为Dp值,i的父亲是i的决策点,树点的val为原车的id)建出来,
考虑两个Dp值相同的决策点i,j:
设i,j的lca为x,那我们一定选i->x和j->x的路径的最小权值较小的一个,倍增lca维护即可