8.18 模拟赛小记 & 学习
谔谔谔谔。菜翻天。
今天模拟赛题目传送门。
A.跳蚤市场(mid)
话说我才看到这个英文名字叫 mid。然后就是手写 lower_bound 和 upper_bound 优化前缀和。
B.组合问题(anm)
这个错排之前上课讲过于是一眼了。但没开 long long 祖宗十八代都被炸死了。
式子(忘了之前写没写过):f[i] = (i - 1) * (f[i - 1] + f[i - 2])
考虑新加入的第 i 个数:1.之前的错排不变,让 i 在 i - 1 个位置中选一个
2.从 i - 1 个数里选一个放在 i 的位置,i 放在另一个的位置,其余的有 f[i - 2] 种选法。
C.旅行(day)
图论题。
分层图 or 魔改最短路。
分层图:好几层。O(n)。
魔改最短路:周几的时间作为边权。
D.购物(trade)
数据结构题,有单点修改和区间查询。感觉分块是可以做的,但是没调出来。遂打暴力。
正解是 线段树维护 dp。
下午讲了 tarjan:
弱连通(有向图):有向边看成无向变,若连通。
强连通(有向图):各点全都连通。
割点:删掉这个点,整张图不再连通(只剩一个点不算)。
割边:删掉该边该图不再连通。
tarjan:在有向图里找强连通分量,在无向图中找割点割边点双边双,环,缩点。
找割点:找连接着独立的连通块的点:换根 dp,因为要在树上,所以根据dfs序建树。
求点双连通分量:求没有割点的最大连通块(最大的点双):栈,找割点,弹。
求割边:类似割点。
有向图里强连通分量缩点,无向图里边双连通分量缩点:建新点、新边,对内的边删了,保留对外的。
P8867 建造军营。
欧拉回路,欧拉路径。