2021HDU暑期多校第三场¶
排名 | 当场过题数 | 至今过题数 | 总题数 |
---|---|---|---|
66/750 | 5 | 11 | 12 |
A¶
upsolved by JJLeo
题意¶
给出一棵
(
题解¶
首先将所有询问离线,并拆分成从下往上走 (到 lca) 和从上往下走两部分。
考虑先全部处理出每个询问走到 lca 时还剩多少钱,再全部处理出每个询问从 lca 走到终点还剩多少钱,下面以向上走为例:
重链剖分,将每个询问分割为
考虑使用 FHQ-Treap,所有询问按照其值排序,对于一次操作:
-
对于所有
的元素,不需要进行操作。 -
对于所有
的元素,分裂后不能直接打标记,因为合并时要保证其中一颗元素都小于另一颗,减去 后可能会小于之前 的元素,考虑如下的 trick:
- 对于
的元素,将其分裂出来暴力一个个把权值减了再插回去,这样做一次会使得其值减少一半,因此对于每个询问至多会被执行 次。 - 对于
的元素,其减去 也不会小于之前 的元素,直接打标记即可。
取出一个元素可以通过记录每个节点的父亲得到对应点的排名,从而使用对于 size 的分裂将其取出。
向下走和向上走是完全类似的,只不过初值变了,且改为正序枚举 dfn 序。总时间复杂度为
B¶
upsolved by 2sozx JJLeo
题意¶
给定一颗
题解¶
赛时做法:
忘了。
可惜最后没时间了,没写完,经典赛后过题。
C¶
solved by JJLeo
题意¶
给定两个串
字符集为 0
到 9
,同时还有一个通配符。(
题解¶
字符集很小,很经典的 FFT 套路题,枚举每个字符,相应位置设为
对于通配符,也将其设为
D¶
solved by 2sozx Bazoka13 JJLeo
题意¶
fread()
!
题解¶
因为这题罚时裂了,离谱 HDU
E¶
upsolved by JJLeo
题意¶
平面有向图,
题解¶
需要利用平面图的性质,从
充分性显然,
如果可以到达 那么不管如何 dfs,前者出栈序必然大于后者。 必要性则考虑其逆否命题,如果
不可达 ,要么 可达 ,那么 ;要么 不可达 ,如果 那么把遍历顺序反过来即 ,反之亦然。从而如果 不可达 则 不成立。
因此将点按
一个小 trick 是,相比去年 claris 那场 hdu 多校类似用动态开点线段树存方案的题,这里不需要维护哈希值,因为对于
F¶
upsolved by JJLeo
题意¶
两侧各
题解¶
考虑模拟费用流,每次增广一个单位流量,将左侧点按权值从大到小排序后,依次选择能从源点到达的 (也就是还没有被匹配的) 进行 bfs,对右侧每个还能到达汇点的点记录最先被哪个左侧哪个点能到达 (不是多源 bfs,遍历完一个起点再加入下一个起点,每个点只遍历一次),这样就可以得到目前这个点可以匹配的最大权值,遍历所有右侧点取最大的权值将其作为这次的增广路,将权值加入答案,同时模拟网络流改变增广路上的容量,并为其增加反向边。
需要注意的是这题是以补图的形式给出的,需要使用补图 bfs:
将目前没经过的点存入链表,每次遍历链表尝试从当前点到达,如果不存在这条边则跳过,否则将该点从链表中删除并到达该点。
因为只有
条边没有,所以跳过的时间复杂度为 ,总时间复杂度为 。
需要注意本题中链表中只能存放右边的点,右边到左边的边可以通过当前的匹配情况得知,如果加入复杂度就不对了。一共增广
H¶
upsolved by
题意¶
题解¶
I¶
solved by 2sozx JJLeo
题意¶
题解¶
随机乱搞,每个状态记录约
J¶
upsolved by JJLeo
题意¶
题解¶
拆成
注意边权很小,这意味着这个下凸函数相邻两点的斜率绝对值也不会很大,可以直接将斜率
设
L¶
upsolved by JJLeo
题意¶
题解¶
考虑两个算法:
- 算法一:直接记录前
个元素的选择情况,从左往右扫一遍,时间复杂度为 。 - 算法二:将序列变成一个
的矩阵,第 个位置在 处 (0-indexed),强行钦定最后一列从下往上 个位置不能放数。那么这个矩阵上下左右四个位置不能同时放数,同时最后一行第 列和第一行第 列也不能同时放数,因此记录第一行的摆放情况以及当前的轮廓线 (第一次知道这个 dp 原来这个也叫轮廓线)。具体来说就是假设 dp 到第 行第 列,那么状态就是第 行前 个位置是否放数以及第 行前 个位置是否放数,最后利用最后一行和第一行的状态判断是否合法,时间复杂度为 。
利用根号分治,时间复杂度可以达到
记录¶
0h:开始分题,看K签到ZYF冲,然后CSK看G签到留着给ZYF写,写完了有人过D了,MJX、CSK看着也是道sb题,CSK冲D,T了一发,然后开始了罪恶的垃圾HDU测评机器。
1h:ZYF去冲C,秒过,继续卡死D,把STL全换了,加上快速读入还是T,把排序优化还是T,加上fread后WA了,觉得是算法有点问题。
2h:想了想I,说是数据随机,MJX想就乱搞一下大概就行,喂给ZYF,ZYF WA了一发换了个乱搞方法就过了,然后过了。翻了翻Clarification。
换成scanf过了,HDU还不支持fread,西内!
3h:想了那个最小生成树和类似费用流的那题,没想出来,挂机一小时。
4h:想了个B的解法,看起来很对,ZYF冲了,没冲完,不知道哪有问题,寄了寄了。
总结¶
- MJX:B最后破案了,当时问ZYF那个查询是单点的么,其实不是,下次不清楚的一定要问好,最后时刻太紧张了很容易写错。
Dirt¶
D(+10):HDU是逆天
I(+1):换了个乱搞算法,没啥办法