补题round1
luogu P4233 射命丸文的笔记
如果一个竞赛图含有哈密顿回路,则称这张竞赛图为值得记录的。
从所有含有 n 个顶点(顶点互不相同)的,值得记录的竞赛图中等概率随机选取一个。
求选取的竞赛图中哈密顿回路数量的期望值。
性质1:有哈密尔顿回路等价于强连通。
性质2:竞赛图缩点是一条链状DAG,一个点向后继所有点连边。
一个竞赛图的所有哈密尔顿回路有
也就是说有多少个竞赛图缩点后是一个点。
小小容斥一下。
AC还要优化到
CF1498E Two Houses
n=500的竞赛图,给所有的入度,问最大的强连通点对的|du[i]-du[j]|最大是多少。交互询问x能否到y,输出Yes时必须结束程序输出答案,输出No可以继续问,所有度数互不相同。
可以用竞赛图性质:如果 x 的出度大于 y 的出度,则 x 可以到达 y。然后n^2拿出所有可能从大到小询问即可。
或者用更强的性质:(竞赛图强连通分量判定定理)将入度从小到大排序。这样极大scc在区间上连续,且右端点满足判定定理\sum=C(n,2)。
直接不用询问就能做完了。
CF1514E Baby Ehab's Hyper Apartment
交互题,有一张
个点的竞赛图。
询问1:可以询问到 单向边方向,询问次数限制 。
询问2:可以询问到 中有无 方向的边,询问次数限制 。
现在需要查询竞赛图任意两点联通状态。
入度貌似不好的到,直接缩点。
先找到一条哈密尔顿路径。这个是单调的,可以二分,用9n次Query1.
再缩点,查询前缀区间是否有边,有就是和前面一个点在同一个强连通分量里面。
CF1779E Anya's Simultaneous Exhibition
IO 交互题。
有个人下棋,他们两两之间对战的胜负是确定的,但你不知道。注意,胜负不具有传递性。
你可以进行至多次询问,询问形式为 ? i s
,其中, 是一个长度为 的 01 串, 表示选择第 个人。系统会返回一个值 ,表示若 与所有被选择的人对战胜利场数。
现在要进行场淘汰赛,若你能安排每场比赛的对决双方,问哪些人最终可能留下。
竞赛图:缩点之后是一条链状dag,答案要求缩点后的入读为0的scc的大小。
先用n次求个度数,排序之后维护第一个scc的最后一个点在哪里,一共用2n次。
CF850D Tournament Construction
一个竞赛图的度数集合是由该竞赛图中每个点的出度所构成的集合。 现给定一个 m 个元素的集合,第 i 个元素是 ai。判断其是否是一个竞赛图的度数 集合,如果是,找到点数最小的满足条件的竞赛图,
n最大是60,然后用兰道定理,dp找到n和du序列。
这样的构造是
CF1497E2 Square-free division (hard version)
数组
由 个正整数构成。你需要将它们分割成最小数量的连续子段,使得每一个子段中的任意两个数(不同位置)的乘积不为完全平方数。
除此之外,你被允许在分割之前进行最多次修改操作。
在一次修改操作中,你可以选择数组中的某个位置的数,将该位置的数变为任意正整数。
请问连续子段的最小数量是多少(在最多次操作后)?
完全平方数就是所有的质因子指数为偶数。两数相乘为完全平方数即两数质因子质数%2之后相等。每段这种数字不能超过k个,预处理
这种题就是其实大题想法很容易想到,但不同的人写起来浪费的时间会相差很大。一开始脑袋短路没想预处理,想到了之后又想了个蠢蠢的错误做法。还wa了一发蠢蠢的错误。
CF1779F Xorcerer's Stones
给定一棵
个节点的树,第 个节点有非负权值 。定义一次操作为:
选择一个节点, 。
计算以为根的子树(包括 本身)内的所有节点权值的异或和 。
将以为根的子树(包括 本身)内的所有节点权值赋值为 。
已知这一操作最多可以执行次。Mars 想知道是否可以通过执行若干次这一操作使得树上所有节点权值均为 。
如果可以,输出第一行一个非负整数表示操作次数,第二行为 个正整数,表示每次操作选择的节点编号 ;如果不可以,输出一行一个整数 。
你不需要最小化,输出任意一组解即可。
发现性质:子树大小为奇数不会选择,因为选了之后异或和也不会改变,只会选择大小为偶数的子树,然后选了祖先关系的两个点会矛盾,所以不会选这种情况。然后dp转移就行了。
暴力转移需要做个背包
还有一种方法是dfs序dp,
具体是:如果第i个点要,就更新到f[i+siz[i]]否则就到f[i+1]。
但好像只快了一倍。
CF1768F Wonderful Jump
给定整数
和长度为 的序列 。 从位置 跳到位置 需要花费 枚金币。 对于 ,求出从位置 经若干次跳跃后跳到位置 需要的最小金币总数。n<=4e5
决策和一步一步比较。会得到一个不等式。然后根号讨论。
具体的
小于根号直接做,大于根号的部分,值域是根号的,min单调,再想想发现只需要看一段相同的最左端就ok。
确实很wonderful的一个题。做过一遍还是巴太行。
CF1783B Matrix of Differences
对于一个
的矩阵,对于每一对相邻(有公共边)的值 ,写下 (即 与 差的绝对值)。定义这个矩阵的美丽度为写下的不同的值的个数。以如下的矩阵为例:
则所有相邻值的绝对值分别是
给你
把序列
CF1783G Weighed Tree Radius
给你一个
个点的树和 条边。第 个点的初始权值为 。
定义结点到结点 的距离 等于 和 之间的边的数量。注意:
定义结点到结点 的权值距离 。注意: 如果
与通常的距离类似,让我们定义结点的偏心距 是从 到其他结点的最大权值距离(包括 本身),即 。
最后,我们定义树的半径是所有偏心距的最小值,即
你需要对次询问进行回答,对于第 次询问,给出两个数 和 ,表示将 的值修改为 。
在每次询问后,输出当前该树的半径。
n<=2e5,m<=1e5
转为求直径,r=直径/2上取整。
然后用线段树动态维护树的直径,每个节点维护直径x,y即可,虚树即可,不用必然是两颗子树,直径依旧是四个点取两个,所以直接1到n建树维护。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)