年龄不够参加不了JSOI 2021/kk
12.21
P3160: 裸的长链剖分优化dpdpdp
P4292: 一种做法是二分然后点分治+线段树,更优的做法是先二分,然后长链剖分优化dpdpdp,转移的时候维护一棵支持单点修改区间查询最值的动态开点线段树即可。
P5904: 妙题,状态转移方程真的没想到。之前听gh巨佬讲过一遍,但是这一次又没有想出来/kk
fi,j:f_{i,j}:fi,j: 在iii的子树内的满足dis(u,LCA(u,v))=dis(v,LCA(u,v))=dis(LCA(u,v),i)+jdis(u,LCA(u,v))=dis(v,LCA(u,v))=dis(LCA(u,v),i)+jdis(u,LCA(u,v))=dis(v,LCA(u,v))=dis(LCA(u,v),i)+j的节点对(u,v)(u,v)(u,v)的数量
gi,jg_{i,j}gi,j: 在iii的子树内与其距离为jjj的节点的数量
然后就可以长链剖分来优化了。
12.22
CF868F: 裸的分治优化dpdpdp,结果写了一个假做法(没有用莫队的方式去移),看了题解之后才发现里面还要套一个莫队……
P3160: 妙题。考虑一个类似二项式反演的容斥,去往格子里面钦定字符;由于被填上字符的格子数量不会很多,按照从小到大的顺序轮流在格子里面填。直接状压dpdpdp即可,记搜可减少代码复杂度。
12.23
CF24D: 有后效性的dpdpdp可以用高斯消元处理。本题中的消元矩阵十分稀疏,可以通过相邻两行来消,从上到下扫一遍即可。做这题期间WA了无数次,主要没有想到m=1m=1m=1的情况要特判,此时答案应该是2(n−x)2(n-x)2(n−x)。
P3177: 针对每一个点计算贡献,用树形背包更新即可。树形背包是O(n2)O(n^2)O(n2)的,结果写挂又写挂
12.24
平安夜多看题(
P3195: 裸的斜率优化题,随便推推式子就搞定了。可这是我第一次写斜率优化题(
CF1316E: dpdpdp好题。从大到小排序,从前往后、从后往前做两个不同意义的状压dpdpdp值,然后枚举分界点并更新答案。常数较大成功卡了评测机
P6157: 线段树维护区间最大值以及最大值位置,区间严格次大值以及严格次大值位置,每次查询区间的严格最大值并输出,然后将一个严格最大值与一个最大值分别做单点修改使得这两个点无效,接着再查一遍整棵树的严格次大值即可,最终将操作依次撤销。等价于单点修改,区间查询严格次大值,可以采用线段树来维护,每次链上查询树链剖分即可。
P6156: 神仙卡常莫反题。式子推完了,就剩∑i=1n∑j=1n(i+j)k\sum_{i=1}^n \sum_{j=1}^n (i+j)^k∑i=1n∑j=1n(i+j)k了,硬是没想出来枚举i+ji+ji+j,开了题解之后自闭了好久……另外这题还有一个多组查询的加强版,卡掉了O(n34)O(n^{\frac 3 4})O(n43)的暴力。
P5386: 采用回滚莫队,里面套上一个线段树二分即可。代码难写,直接口胡/kk
本文总结了作者在算法竞赛中遇到的一些经典题目及其解决方案,包括长链剖分优化DP、分治优化DP、斜率优化等高级技巧,并分享了解题思路与实战经验。
3016

被折叠的 条评论
为什么被折叠?



