当前位置: 首页 > news >正文

25/09/18 小结

第三期ccb

CF519E 2100
虽然是一道2100的题,但还是比较好想的。在树上找到最短距离,明显需要用到公共祖先之类的算法,并且,还要明确的知道节点往上走几步会到哪个节点。因此,学习了dfn序求LCA的方法。
具体来说在dfs序中,两个节点之间的dfn一定会遍历到lca的儿子节点,而这个儿儿子节点距离根比较近,同时是这个区间内父亲节点dfn序最小的。于是在dfn序中构建一个st表,用来记录这个区间中dfn序最小的节点是哪个。st[0][dfn[u] = ++ dn] = f;可以看到保存的是父亲节点
所以,st表保存了dfn序更小的父亲节点是哪个,最小的那个父亲节点就是lca。

学完lca之后,用这个找到lca,然后看其中一个节点是否是lca,分类讨论一下。最后需要,再用倍增的方法找到子树对应的节点,然后用子树的节点数算一下中间点有多少个。这道题我写的不是很熟练,好想但不好写,可能是图论的题写的比较少的原因。

CF1637E 2100
这道题完全没有想出来。说是一个时间复杂度的trick也好,或者说是理解了根号分治之后自然而然产生的想法也好。总之,这道题用到了两个东西\(cnt_x\)\(x\),入手点是\(\sum cnt=n\),因此\(cnt\)的种类有\(\sqrt n\)种,于是枚举每个\(x\)的时间复杂度是\(O(n)\),枚举每种\(cnt_y \leq cnt_x\)的时间复杂度是\(O(log(n))\),在\(x = y\)时和\(\{x, y\}\)不合法的时候转到更小的(m次),否则用\(cnt_y\)里最大的\(y\)就行了。
最后的时间复杂度时\(O(nlog(n) + m)\)

CF2052J 2000
这道题没写,改天吧。


第四期ccb

CF883H 1800
一道构造题,把所有因数拆出来,分类讨论一下。

CF1660F1 1700
构造,需要找到左右离得最近的加号,然后遍历所有区间,用前缀和之类的方法优化之类的。

CF1184E1 1900
这道kruskal可真kruskal啊,看到最小生成数之类的会想到,然后想一下就行了。

CF1260D 1900
刚开始以为和上一道一样是一道唐题,然后惨败于此题,看了错误样例之后发现,还需要区间合并,才是正确的答案,结果又WA了,后来才修改了区间合并的右端点操作的失误,才过了。确认完毕,是一道挺好的二分题。

http://www.zskr.cn/news/7689.html

相关文章:

  • 用FastAPI和Streamlit实现一个ChatBot
  • re分区为y盘,efi分区为z盘
  • 文件结构与数据分析专项-解析
  • 平静
  • Codeforces 2144F Bracket Groups 题解 [ 紫 ] [ AC 自动机 ] [ DP ] [ 构造 ]
  • Clean Code/代码简洁性Good-Practice:使用统一异常来取代错误处理
  • 一个联名款电子产品的技术实现和诞生
  • JOISC
  • WPF使用Cef加载Vue3页面问题
  • IP子网划分
  • curl与wget
  • Day17冒泡排序
  • RabbitMQ—运维篇 - 指南
  • 几B大模型的空间存储大小
  • matlab免费下载安装激活教程(附安装包下载)MATLAB R2025a超详细下载安装教程
  • Spring Boot + flowable 完美结合,快速实现工作流 - 教程
  • Pyfluent 执行Meshing工作流
  • 主机连接虚拟机和hbase的命令
  • 实用指南:uniapp打包前端项目
  • GO基础总结
  • dash 从入门到精通
  • 02020401 EF Core基础01-EF Core简介和开发环境搭建、实体类、配置类、继承DbContex的类、Migration包的使用
  • 【未完成】2025.9 做题记录
  • 【9月中】
  • 08-分组函数
  • Stanford CS336 | Assignment 1 - Transformer Language Model Architecture - 详解
  • 完整教程:运维安全05,iptables规则保存与恢复
  • 07-日期和时间相关函数
  • 数据结构 项目一
  • Codeforces 1646 记录