2023.4.18 nfls集训Day2总结

Div2 link

Div1 link

1.时间安排

7:50~9:30

T1:题目巨长的概率期望题,感觉是阅读理解题。

T2:关于树的直径问题,一眼树形DP+分类讨论,而且数据范围是 \(4e6\) 只能线性了。

T3:非常复杂的网格上的最优化问题,感觉可以插头DP,但是 \(30\) 的数据范围显然是搞一些网络流相关的东西。

T4:DS题,没有部分分,离线可能很简单,但是强制在线。

直接写T2正解,每个点维护一个三元组表示最大,次大,第三大就能分类讨论处理了,细节很多,还好是IOI赛制随便交,9:30左右终于过了。

9:30~10:00

先把T4仅有的30分部分分写了,思考了一会没想出来怎么转化。

10:00~12:00

先想了半小时的T3,觉得很难用简单的费用流建出来图,而且题目要求的所谓的环很难在图上体现出来,也不想写巨型分讨插头DP,就先摆了。

想了一下T1,觉得大概就是每次可以把区间分成不超过 \(n+1\) 段,这样子"广义"二分下去,一开始以为均分就是最优的,调了调能过样例,但是怎么都过不去测试数据。

猛然间意识到这样二分复杂度是 \(n|V|log|V|\) 的,显然不是出题人想要的复杂度,而且这个东西含有"划分段","最优"这些要素,所以直接DP,写着写着发现复杂度变成了 \(|V|^4n\),不过能过小测试点。

12:00~12:50

吃饭吃了20分钟,猛然间意识到这个东西可以改成简单 \(|V|^3n\),回去改了过了这个部分分。

result:

T1:56 T2:100 T3:/ T4:30

2.总结

Div2T1:

时间来不及了,应该是能A掉的。

观察到DP过程实际上是可以存在继承关系的,把每次清空去掉,直接在上个版本上做新一层的DP就可以做到 \(|V|^2n\)了,多了一些细节。

Div1T1(Div2T3):

确实是网络流题。

首先环一定是黑白相间的,那么把图黑白染色一下,并强行钦定黑色只连上下边,白色只连左右边(可以交换),这个是因为图的形态,每个点必须伸出恰好一条横边和一条竖边,这个边权只需要赋值成题面给出的就好。

最关键的问题在于如何让每个点找到他应该在的环,这里用了一个特殊的模型,考虑拆点,每个点 \(x\) 连向 \(x'\),如果这条边被流了,就代表这个点没有在任何环中,那么这个边的边权就需要赋值为0,表示不产生贡献。

对于每条有向边 \(x->y\),连出来 \(x->y'\),因为这个图 \(x\) 的入度都是1,\(x'\) 的出度都是1,所以如果满流,每个点一定找到了所属的环或选择不产生贡献。

直接跑费用流,复杂度上界 \(O(n^3m^3)\),数据非常强。

Div1T2(Div2T4):

\(nxt_i\) 表示 \(i\) 之后最近的与 \(a_i\) 相等的位置,没有则为 \(n+1\)

答案即为 \(\sum_{i=l}^{r}min(min_{i\leq j\leq r}{nxtj}, r+1)-i\)

没有可持久化就是楼房重建,具体的是用到了线段树维护前/后缀最小值合并时二分的trick。

把这个东西强行可持久化即可,复杂度时间2log,空间1log,非常难写。

没写过楼房重建,确实转化不算太难

Div1T3:

看题,一眼丁真以为是所有本质不同的直线数,但是很快就被人叉了。

其实差不多,是求所有除两端点是格点不经过其他格点的线段数,这个有经典结论是长宽互质。

证明就考虑把线段绕中点统一向某个方向转一个非常小的角度,容易发现是本质不同的方案(其实和我的结论差不多)。

推一推式子就能杜教筛了,式子挺简单的。

Div1T4:

真的有人卷计算几何吗?

posted @ 2023-04-18 22:48  Displace  阅读(74)  评论(0)    收藏  举报