2025 11 15
- 第23场
- 弘文了这场我T1都没切,我考虑枚举排列和起点之后,我不知道为什么就没有去想把在A中的B和在B中的A率先交换,以及在A中的C和在C中的A交换,然后再算B,C的,理由应该归咎于状态问题加上没有充分思考,因为一开始我是有一个枚举完直接统计不合法的个数再用 \(n\) 减去这个为答案的假做法的,但是我知道这个假了之后可能就有点被控制在该如何考虑这个交换过程会发生的事上面了,我想到了可以贪心的去换,但是这个想法只存在了一瞬,因为我当时天真的认为这是很难统计的事情,导致我一直无效思考了1h,这是一个比较惨痛的教训/jk
- 无论是什么思路,既然已经全心去思考了,那么也要在这个思路上试一下,一定要确认无法可行之后才放弃
- T1
- 为啥这个讲解的做法和我一样但是我的WA了啊,某不是讲错了(
- 很显然是枚举 A 的左端点,然后就有ABC和ACB的两种方案,在这些方案中取最小值即为答案
- 没按照题解的做直接自己分类讨论了一下推出了式子
- 设 A 段有 \(s_1\) 个B,\(s_2\) 个C,B段有 \(s_3\) 个A,\(s_4\) 个C
- 分类讨论后答案为 \(s_2 + s_4 + \min(s_1, s_3)\)
- 熟悉了下NOI Linux 的用法,确认不会再像上次一样生疏了
- T2
- 暴力优化+剪枝何意味,想网络流建模想了半天,NOIP模拟赛暴力优化+剪枝放T2是否太敷衍了
- 最多只有 \(k\) 个不选,故若 \(d_i\) (与 \(i\) 有矛盾的人的个数) \(d_i > k\) 则 \(i\) 一定不选
- 把这些数删去连同它们的边都删去之后若有度数为0的点则一定会选
- 把这些不能选的标记为不选,选的选了后把这些数排除在外考虑剩下的数
- 考虑若剩下的选了的数的集合为 \(A\) , 不选的集合为 \(B\) ,因为 \(A\) 中的元素两两之间没有边,\(B\) 的边最多有 \(k * k\) 条,故当剩下的数大于 \(2 * k * k\) (实则可以更加严苛但是这个度就够了) 的时候则直接无解
- 后面就枚举选或者不选就行了加上可行性剪枝即可
- 感觉正赛不会出这么shit的题但是还是要考虑一下剪枝优化等操作的
- T3
- 考时想到了dp状态设计,但是在转移的时候犯了难,没有想到二分,原因在于这道题没想太久的缘故,以及下意识地认为不需要二分,即使在自己已经发现了很明显的单调性的情况下
- 有单调性的时候可以考虑一下二分,毕竟花不了太多时间
- 二分 \(D\) 表示最远两点的距离
- 定义 \(dp_{i,j}\) 表示在 \(i\) 处第一和第二条航道有连线的时候,总共连了 \(j\) 条线,别的点到 \(i\) 这里的最远距离的最小值
- 定义 \(op_{j,i}\) 表示在 \(i\) 有一条连线,\(j\) 有一条连线,\(j+1\) 到 \(i-1\) 没有连线的情况下内部的最远两点的距离
- 定义 \(d_{j,i}\) 表示在 \(i\) 有一条连线,\(j\) 有一条连线,\(j+1\) 到 \(i-1\) 没有连线的情况下,最远的点到 \(i\) 的距离
然后直接转移即可 弘文了一道题调了一个晚自习
- 为了完整把前天的总结粘过来了
- T4
- 把序列划分问题变成了树上链划分问题
- 设 \(dp_x\) 为把以 \(x\) 为根的子树划分成若干条链的最小代价
- 令 \(dep_u\) 为 \(u\) 到根的路径长度
- 则 \(dp_u = C + (dep_v - dep_u)^2 + \sum_{x \in P(u,v) dp_x}\) \(P(u,v)\) 表示从 \(u\) 到 \(v\) 的链上旁边的所有点
- 可以考虑设 \(s_v\) 等于后面那一坨式子,则 \(u -> fa_u\) 的时候所有 \(v \in T_u\),\(s_v += \sum_{x \in u兄弟节点} dp_x\)
- 则 \(dp_u = (dep_u)^2 + \min(-2 \cdot dep_u \cdot dep_v + s_v + c + (dep_v)^2)\) (关于 \(dep_u\) 的一次函数)可以把后面这坨看成 \(\min_{v \in T_u} f_{v} (dep_u)\)
- 可以使用李超树启发式合并,感觉思路很清晰关键在于如何实现李超树/jk \(O(N log{N}^2)\) (或者可以直接实现李超树合并 \(O(N log{N})\))
- 第24场
- T1
- 人才,r=0,b=0 的情况没判,除以0 RE了/fn
- T2
- 人才,读题三遍结果理解错题目意思了,第三条限制 \(i < j\) 没有祖孙关系,不是 \(i\) 不是 \(j\) 祖先的意思,而是 \(i\) 既不是 \(j\) 的孙子也不是 \(j\) 的祖先 弘文,卒
- 好的听完正确题意我开始继续我考时的思路进行分析,其实那时候已经想到了 $$
- 正难则反,事实上是因为 Y 的局面的答案比 X 更好考虑则我们可以考虑 \(X\) 为空集往 \(X\) 里面的加元素的过程
- 加入把节点 \(x\) 从 \(Y\) 中放入 \(X\) 中,则
- 减去 \(x\) 子树中集合 \(F(Y)\) 中满足 \(w_x < w_y\) 的点 \(y\) 的个数
- 减去 \(x\) 祖先中集合 \(F(Y)\) 中满足 \(w_x > w_y\) 的点 \(y\) 的个数
- 减去 \(x\) 子树中集合 \(F(X)\) 中满足 \(w_x <= w_y\) 的点 \(y\) 的个数
- 减去 \(x\) 祖先中集合 \(F(X)\) 中满足 \(w_x >= w_y\) 的点 \(y\) 的个数
- 加上 \(|F(X)| + d_x\)
- 如果 \(w_i\) 互不相同的话就可以直接贪心排序做了,但是我们还有可能有相同的 \(w_i\) 的情况
- 若 \(w_i\) 有相同的并且是祖先关系的,我们可以发现我们一定会先选 \(fa_x\) 再选 \(x\) 则依旧是贪心排序即可
- T3
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/966368.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!