JSOI&NOI 2021 Online冲刺之刷题笔记

本文总结了作者在算法竞赛中遇到的一些经典题目及其解决方案,包括长链剖分优化DP、分治优化DP、斜率优化等高级技巧,并分享了解题思路与实战经验。

年龄不够参加不了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(nx)

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)^ki=1nj=1n(i+j)k了,硬是没想出来枚举i+ji+ji+j,开了题解之后自闭了好久……另外这题还有一个多组查询的加强版,卡掉了O(n34)O(n^{\frac 3 4})O(n43)的暴力。

P5386: 采用回滚莫队,里面套上一个线段树二分即可。代码难写,直接口胡/kk

为给选手提供一个锻炼的机会,CCF拟举办一场NOI Online能力测试。测试分为入门组和提高组,每组限额报名3万人,人数报满关闭系统,每组成功报名选手在同一时间参加线上测试。 一、测试时间: 提高组:3月7日8:30-12:00 入门组:3月7日14:30-18:00 二、测试方式: 1.选手报名成功后,根据系统生成的准考证号和密码登陆测试系统。 2.测试试均采用电子版,每组3道目。选手在线提交源程序,测试系统离线统一评测。 三、报名资格及时间: 1.因本次测试为限额参加,为给更多选手机会,每位选手限报名一组测试。如每组人数报满,系统会提前关闭。曾在CSP-J/S2019第二轮获一级的选手具有优先权。 2.分阶段报名: 第一阶段为CSP-J/S2019第二轮一级选手报名,时间:即日起至2月20日24:00截止; 第二阶段为开放报名,时间:2月21日-26日24:00截止。 四、报名方式: 1.测试费用:免费 2.报名网址:http://rg.noi.cn/(点击下载使用说明) 3.参加者请如实填写个人信息报名,包括但不限于姓名、身份证号、出生日期、性别、就学(学籍学校)/就职单位等。 4.测试前公布选手对应的动态地址,请关注邮件及NOI网站通知。 五、评测及成绩 本次测试不评奖、不颁发证书。3月20日前公示测试成绩前25%名单 六、咨询邮箱:noi@ccf.org.cn 此通知。 中国计算机学会 2020年2月17日
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值