首页 > 其他分享 >csp-s 模拟 12

csp-s 模拟 12

时间:2024-10-20 09:31:50浏览次数:7  
标签:转移 12 环上 max 点集 枚举 起点 csp 模拟

csp-s模拟12

T 小 h 的几何

whk

我能说什么呢...

T 小 w 的代数

仙人掌,DP,计数题

本题部分分较有启发意义

  • 考虑是一棵树怎么做
    注意到 \(n\) 比较小,直接想想比较暴力的做法,可以用 \(O(n^2)\) 的复杂度枚举起点和终点,而由于是一棵树,两点之间的路径是唯一的,并且本题要求点集不重,所以这样就变为了序列问题,即给定一个序列,求给定起始、最终数的上升序列个数,这样就得到了 \(O(n^4)\) 的做法。注意到枚举终点是一个比较傻的行为,这浪费掉了一些性质,即 \(DP\) 的继承,所以枚举起点然后 bfs(或dfs) 全局转移。时间复杂度为 \(O(n^3)\)。

  • 考虑是一棵基环树怎么做
    回到上一部份做法,暴力枚举起点和终点,然后发现当起点和终点都在同一棵子树内时和上一档无差,而起点和终点不在同一棵子树时路径变得不唯一,即在环上有分叉,对于现在这个做法当然也就是多枚举一遍的事,但是注意两次转移都会有不选环上其他的点直接选终点的转移,而这样的转移实际上是多转移了一次,用环上起点转移一次减掉即可。还是想想怎么 bfs 优化,注意到从路径本质上是 一棵子树 \(\to\) 环 \(\to\) 另一棵子树,在进入另一棵子树前将两条路径的状态合并即可。具体的,先枚举起点,当 bfs 到环上时先将环上的点全部转移完毕再继续,关于转移可以正反跑两圈,每到达一个点就将 \(O(n)\) 状态记录下来,这样一个点就有正反两个状态,考虑合并,注意到包含了环上起点的状态两次,直接 \(O(n)\) 合并后 \(O(n)\) 减掉即可。
    这样时间复杂是 \(O(n^3)\)

  • 考虑是一颗仙人掌怎么做
    将环看作点仙人掌本质上是一棵树,可以套用上面的做法,而环上就特殊转移(将环上的点两遍转移完后再进行下一步)就行。具体的,先枚举起点,点转移是平凡的,当到一个环上时和处理基环树一样正反转移两次、合并状态、去重即可。
    时间复杂为 \(O(n^3)\)。

T 小 y 的数论

结论题,树论,st表

  • 结论 1:两个点集合并后直径的两个端点一定是属于原来两个点集直径共四个点中的。
    证明:考虑反证法以及 dfs 找直径。

  • 结论 2 :定义一个点集选 \(k\) 个点构成虚树的边权最大值的这 \(k\) 个点为前 \(k\) 优点,两个点集合并后的前 \(k\) 优点一定是属于原来两个点集的前 \(k\) 优点的。
    证明:和结论 3 一起证明。

  • 结论 3:前 \(k\) 优点一定是包含前 \(k-1\) 优点的。
    证明:先考虑对于一个点集怎么怎么获得这前 \(k\) 优点,首先这个点集的直径一定是会被选入的,然后钦定直径的一个端点为根对这个点集进行长链剖分,(算上重链顶部的轻链)从大到小选择前 \(k-2\) 大即可,依据贪心这样肯定是对的。这个地方就能证明出结论 3 了。现在考虑对于两个点集的合并,根据上述方法,新点集的直径一定是会被选择的,如果 k>2 ,则接下来的两条边一定是优先选择以原直径为端点的长链,那么剩下的链就变成了原来的形态了(原两个点集的重链),则剩下的一定在这些中选择,证毕

根据结论 2、3,我们能得到一个显然的线段树做法,即每个区间维护这个区间的前 \(k_{max}\) 优点,合并就长剖按照上述方法即可(不懂题解为什么能 \(O(n)\),不排序就能求前 k 长链吗?求教教)。时间复杂度为 \(O((n+q)lognk_{max}logk_{max})\) ,并且这个做法常数巨大会 GG。考虑优化,注意到合并两个点集的前 k 优和区间取最小值、最大值、\(\gcd\) 是一个道理(即可重复贡献类问题),所以可以 \(st\) 优化。具体的每 \(k_{max}\) 分成一个块,共有 \(O(\frac{n}{k_{max}})\) 块,预处理是 \(O(nlogk_{max}log\frac{n}{k_{max}})\) 可以接受。而查询可以将散块合并成一个块再和 st 表中的两个块合并即可,这部分的时间复杂度为 \(O(qklogk)\) 的。

但是这样的话可能还是不太好过,可以将 st 表中的 k 个点有序放置,这样合并的时候就能归并省去一次排序,然后建虚树时用单调栈能再省去一次排序,这样就能过了。
总时间复杂度为 \(O(nlognlogk+qklogk)\)。

T 小j 的组合

签到题

以直径的两个端点分别作为起点和终点即可,证明略。

时间复杂度 \(O(n)\)。

标签:转移,12,环上,max,点集,枚举,起点,csp,模拟
From: https://www.cnblogs.com/07Qyun/p/18475089

相关文章

  • 使用application模拟聊天室
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>Session测试</title......
  • 大模型~合集12
    我自己的原文哦~ https://blog.51cto.com/whaosoft/12286764#DISC-FinLLM复旦大学团队发布中文智慧金融系统,采用多专家微调框架金融领域为自然语言处理(NLP)模型带来了独特的挑战和机遇。当前,金融文本和数据的信息量和复杂性呈现爆炸式增长,一个强大、可靠的智慧金融系统可以......
  • 多校A层冲刺NOIP2024模拟赛09
    GG多校A层冲刺NOIP2024模拟赛09T1排列最小生成树(pmst)需要思考一会。你得发现一个性质:所有要的边的权值都得小于n,因为每个点都可以找到至少一条边权小于n的边,所以最后生成树里的边的边权一定小于n。那么$\vertp_i-p_j\vert\times\verti-j\vert$中较......
  • 使用sendReddirect模拟用户登录
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>简单登录模拟</title>......
  • jsp房产客户信息分析系统06512--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表客户,房屋类型,房屋信息,预约看房,房屋购买开题报告内容一、研究背景与意义随着房地产市场的快速发展,客户信息的有效管理和分析对于房地产企业至关重要。然而,......
  • 【信奥赛·C++基础语法】CSP-J C++ STL 标准模板库 - 算法
    序言标准模板库(STL)的算法部分提供了一系列强大的工具,用于对各种容器中的数据进行操作。这些算法可以大大提高编程效率,减少代码重复,使程序更加简洁、高效和可读。无论是处理简单的数据结构还是复杂的大规模数据,STL算法都能发挥重要作用。一、STL算法的分类排序算法快速......
  • 科普文:软件架构数据库系列之【MySQL死锁案例分析:间隙锁“Gap Lock”导致的死锁及解决
    概叙科普文:软件架构数据库系列之【详解MySQL死锁】-CSDN博客科普文:软件架构数据库系列之【MySQL死锁案例分析:index_merge导致的死锁及解决方案ERROR1213(40001):Deadlock】-CSDN博客科普文:软件架构数据库系列之【MySQL死锁案例分析:加锁顺序“循环等待”导致的死锁及解......
  • [51] (多校联训) A层冲刺NOIP2024模拟赛09
    关于生成式AI怎么才能让这个b学会断句我目前的方案是,把逗号和句号单独作为一个特殊词汇看待,也统计到词频里,该断句的时候就断表扬这次的题解,写的很清楚A.排列最小生成树总存在一颗生成树使得树上最大边权值小于\(n\)考虑直接连接序列里的所有\((i,i+1)\),因为\(|a_......
  • 南沙C++信奥赛陈老师解一本通题 1286:怪盗基德的滑翔翼
    ​【题目描述】怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪......
  • 重庆强校模拟赛,提高组堪比省赛
    承上启下今天又被喂了四个小时的史,逆天。T1送分,简单得令人落泪,只要能打提高组就能\(AC\),当时还以为终于有一场普通的模拟赛了,哈哈,笑不活了。T2,同学大佬们目测蓝紫,就算了,我太菜了,想了两个半小时,最后二十分钟打完暴力跑路。T3,BYD,std700多行,出题人你提米当个人不行吗?!你看看这像是......