首页 > 其他分享 >CW暑假集训

CW暑假集训

时间:2023-07-10 21:13:11浏览次数:42  
标签:点双 点权 方点 最小值 暑假 lca 考虑 CW 集训

集训模拟赛的题解应该都在 CWOI 杂题里

主要就是题目的记录?不太想写游记。

简单题不会写。

7.7

考试,考得依托。

7.8

很趣味的数据结构!

感觉很有集训那味啊,就是前面讲一会简单的东西然后突然上强度。

gym100739E. Life as a Monster

还是挺简单。套路地把切比雪夫距离转成曼哈顿距离,然后做完了。

主要难点是卡空间。你可以用平衡树,\(\mathcal{O}(n)\) 的空间;或者你可以动态开点线段树,但是要注意在 int mid=(l+r)>>1 的时候 l+r 会爆 int(如果你有这个错误,大概会 mle on test 5)。

对了,\(T\) 记得及时膜 \(BASE\),不然 a1*T 会爆 long long(如果你有这个错误,大概会 wa on test 19)。

CF319E. Ping-Pong

考虑两个区间

CF487E. Tourists

因为题目要求不经过重复点,我们考虑点双。根据点双的定义,我们路径上经过的所有点双,它们里面的最小值是可以取到的,所以你考虑把它缩点。

但是点双是会重点的,不能直接缩。我们考虑一种叫圆方树的结构——对于所有点双,建一个对应的虚拟点,称为方点;把这个点双里的所有点全部向这个点连边,称为圆点。显然方点与方点间由圆点相连,这就构成了一棵树。

对这棵树树剖,定义圆点权值为题目中所给,方点权值为它对应点双内所有点权值最小值,原问题等价于求这棵树对应路径上经过的所有点的点权最小值。直接这么写在修改时不太好做,因为你需要修改包含它的所有方点。我们考虑略微修改一下方点点权的定义——修改为它所有儿子的点权最小值。这样每次修改点权时只用改它父亲这一个方点了。可以对每个方点开 multiset 来维护。

有一种特殊情况需要考虑:当 \(u,v\) 的 \(\text{lca}\) 为方点时,需要再考虑 \(fa_{\text{lca}(u,v)}\) 的点权。

CF1284D. New Year and Conference

假设 a 区间不交,b 区间相交,你可以开一棵线段树,维护 \(eb_j=i\) 的所有 \(j\) 中 \(sa_j\) 的最大值和 \(ea_j\) 的最小值。枚举一个区间,区间查即可。时间复杂度 \(\mathcal{O}(n\log n)\)。

当然,有一个更加牛逼的做法。维护集合 \(A\),里面的二元组 \((i,j)\) 表示 \([sa_i,ea_i]\) 和 \([sa_j,ea_j]\) 有交,\(B\) 同理。你只需要判断 \(A\) 和 \(B\) 是否相等即可,这个可以 hash。时间复杂度也是 \(\mathcal{O}(n\log n)\),瓶颈是排序/离散化。

7.9

CF1149C. Tree Generator™

从直径的求法入手。一个最显然的想法是两次 dfs 求直径,可惜它行不通。

不妨转化一下思路:直径等价于树上最长的一条路径。对于一条路径 \((u,v)\),\(\text{dist}(u,v)=d_u+d_v-2d_{lca}\)。这跟括号序列有什么关系?对于两个点 \(u,v\),设它们在括号序列中对应点为 \(l,r\),那么 \(d_{lca}=\min\limits_{i=l}^r\{d_i\}\)。所以求直径等价于在括号序列里求三个点 \(x\le y\le z\) 使得 \(d_x+d_z-2d_y\) 最小。

显然三个数同时加减一个数对答案没有影响,所以我们可以只用考虑在这个区间内每个位置的深度(左右括号对应 +1/-1,深度就是前缀和),像维护最大子段和一样维护一下相关信息转移即可。

CF226E. Noble Knight's Path

标签:点双,点权,方点,最小值,暑假,lca,考虑,CW,集训
From: https://www.cnblogs.com/xx019/p/17537756.html

相关文章

  • 暑假周记(7.10)
    今天周一哇去,给两个年纪小孩上英语,还有一个小升初教语数英好累啊,哇,那些乡村支教的老师们是怎么做到的,我这个还是有着不错的工资的,我的上课条件也远比他们优越,感念这一帮伟大的老师,今天忙了一天就看了十页大道至简,倒是第一次玩游戏用上Java了----我的世界Java版本,Java真牛,一定得把......
  • 20230710巴蜀暑期集训测试总结
    T1打个不太暴的暴力但是爆了。只对了subtask1,不清楚发生了什么。先建出Kruscal重构树,对每个询问二分答案,判断就用暴力启发式合并T2打了一个\(20pts\)dp。第一步没有想到,每怎么见过这种题。将问题转化为满足\(\foralli,x_i\leA_i,x_i\leB_i\)的序列\(x\)个数。枚......
  • AcWing 340. 通信线路
    题目传送门:340.通信线路-AcWing题库 题目大致意思对于一条路径,他的花费是,其经过的所以路线中花费最大的一条,你可以选择k条线,使其变为免费,求1到n的最小花费。 解题方法本题可以用spfa加上dp来写。对于同样是单源最短路,不可以用dijkstra的原因是:该题会将路径更改为0,如果......
  • UOJ #37. [清华集训 2014] 主旋律
    UOJ传送门考虑dp。设\(f_S\)为点集\(S\)构成强连通分量的方案数。容易想到容斥。设\(ed_S\)为\(S\)内部连边数,那么\(f_S\)就是总的方案数\(2^{ed_S}\)减去构成的不是强连通分量的方案数。我们考虑如果整个图不是一个强连通分量,那么缩点后一定有\(>1\)个分量,并......
  • 2023ACM暑假训练day 11 动态规划
    目录DAY11动态规划训练情况简介题题题题DAY11动态规划训练地址:传送门训练情况简介2023-07-1009:30:17星期一早上:下午:晚上:题题意:思路:题题意:思路:题题意:思路:题题意:思路:......
  • 暑假周记(7.9)
    周日,美妙的周日没什么特别的今天finalfinallyfinalize区别final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代......
  • 山东大学考研机试--AcWing 3717. 整数序列
    题目描述很多整数可以由一连串的整数序列(至少两个数)相加而成,比如25=3+4+5+6+7=12+13。输入一个整数N,输出N的全部整数序列,如果没有则输出NONE。输入格式一个整数N。输出格式每行输出一个满足条件的整数序列。序列内部元素从小到大排序。优先输出首项更小的序列。数据......
  • lvgl PCwin系统codebook模拟
    转载地址:https://blog.csdn.net/qq_36347513/article/details/122837724一、LVGL简介LVGL(LightandVersatileGraphicsLibrary)轻量级通用型图形库,是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的组件,美观的视觉效果和低内存占用等特点。支持触摸屏操作,......
  • 暑假!
    夏令营结束了,许多事情告一段落,又有许多事情准备开始进行。以后大概不会更博客了(flag先立在这里),或许也可以来上传一些不一样的?比如有点想学做菜,如果到时候能做出几个能吃的菜可以来发几张照片纪念一下……或者是去哪些城市玩,也可以拍几张风景照打卡留念一下。......
  • 暑假第二周总结
    今天是暑假的第二周,我们完成了第二个小学期任务——数据库,现在终于可以回家了在本周,老师要求我们自己写一个mis系统,我写的图书管理系统。   作业管理系统是基于信息管理技术的帮助老师发布作业,学生完成作业的一个平台,老师可以通过该系统发布各类作业,修改作业,删除作业到最后......