补题进度:5/9(11)
写两个签到,就趴在地上起不来了,睡了一觉起来,不想做i,拿着j不知所措,想了一下专题的问题,就结束了,好像被多校打的有点失去自我了啊
A.run
$dp_{i,0/1}$:分别表示是walk or run过来的方案数即可
B. discount
待补
C.Fluorescent 2
题意
有一个无线大的平面,平面上有n条斜率不为零的直线。
有m次询问,每次询问从y轴上的一个点出发往x轴正方向沿一条直线走,最后一个与这n条直线相交的点的
横坐标。
n,m<=50000
题解
待补
D.Two Graphs
贪心即可
E. tree
留坑
F. trade
留坑
G.transform
题意
数轴上有n个集装箱,第i个集装箱位于坐标x[i],有a[i]件货物。
现在要把集装箱进行一些移动,从位置u到位置v的花费为$2*abs(x[u]-x[v])$, 求在所有货物移动总距离不超过T的情况下,最多能把多少个集装箱移动到同一个位置。
题解
因为答案是单调的,可以二分答案。
由于最后的答案一定是一段区间数字移动到一起,可以直接枚举左端点,右端点是单调的。
那么问题转化为给一个区间,移动的花费是曼哈顿距离,怎么check得到这个区间的点移动到一起花费最小值?
这是一个经典问题,答案是所有位置的点的中位数。
如1,2,2,5,所有点移到x=2最优
Trick:因为枚举的区间可能不是恰好mid个,左端点或者右端点肯定有一部分点取不到,枚举左端点是,mid左边可能不止左端点不取,但右端点一定是可以的,因为r-1的和< mid 但r的和>=mid 故要分别从左和从右端枚举。
H. Longest Path
题意
给一棵点权树,选出三条不相交的链使得三条链的权值之和最大
题解
I. Different Integers
找规律
J.farm
题意
给一个 $nm$ 的矩阵,每个点有一个值,现有T次处理,每次用 $k$ 处理矩阵的一个矩形区域,若k不等于每个点原来的值就失效,问T次处理后失效的格子数量 $(a_{ij},T,nm<10^6)$
题解
假如格子中的值和修改只有01,直接二维前缀和分别为何每个格子0和1的次数即可。
Trick:
可以把所有点离散化成一维
$$(x-1)*m + y-1$$当然二维动态开vector也是可以的
解法一:
考虑每一个二进制位,对T个询问的k进行二进制01拆分,就变成了上面的问题
实测动态开vector TLE了
解法二:
二维偏序
对于每一种格子,我们若是统计出每个格子用相同的格子修改的次数,和每个格子总的修改次数进行比较便可以判断是否bad
那么如何统计出每个格子用相同的格子修改的次数?
不难看出,这是 $well-knowed$的二维偏序问题,对一维排序(x),另一维用BIT维护即可,这样可以保证修改是正确的。但对于同一个点要先修改在查询即可,因为维护的时候有+有-,故不用每次清空BIT
解法三:
随机
K.carpet
题意
有一个$n*m$ 的矩阵A,每个位置有一个字符和一个权值,现在要找一个子矩阵,使得这个子矩阵是A的一个
循环节,并最小化子矩阵的权值最大值。
题解
待补or留坑