qbxt2023国庆刷题 Day6 ~ Day7
Day6
虽然但是
T1
比较典的题,并查集维护下一个没被删的点即可
复杂度
T2
题目里的同构二字提醒的很明显了,要用树哈希判树同构
题目显然是
设
值相同- 对这些子树的根分配的问题等价于可重集问题:找一个长度为
的可重集,所有数 的可重集方案数。问题是一个插板法,把 个板子插到 个空格里
因此我们只需要这么做就可了,复杂度
T3
一个
考虑当一个棋子放到了小格子的左上角,则在这个小格子左上角的所有小格子,他们都只能放到左上角。同样的,对于右下角某个小格子放了一个棋子,则在这个小格子右下角所有小格子都只能放到右下角。连接这两个小格子之间的一个阶梯,右上和左下都填成小格子填在右上和左下的方案
考虑暴力的计算这个贡献,我们暴力枚举左上角
一些细节:当
T4
- 如果我们有一个数不想要,比如说
,我们可以 ,然后再乘起来 - 如果有一些数不想要,比如
,我们可以把他们加在一起后开根
根据小学数学知识拉格朗日差值,考虑当
当
然后我们没有考虑完,因为
贪心、二分、模拟
-
个线段选最多不相交右端点排序
但有个神奇的东西,我们把两个相交的线段连边,这个问题就变成了最大独立集,而且图也不是二分图
这个图有一个性质:所有环都是三元环,比如:1 2 1 3 2 4 3 4
这个样子是不可能出现的
因此如果给你一个这样的图,我们可以把他转换成原问题。我们没必要把线段构造出来,但对于一个三元环,里面肯定选的一个点是度数最小的 -
个任务,第 个结束时间 ,完成需要 的时间,如果超出时限产生超出部分的贡献。让贡献最大值最小- 按
排序?
1 100 10 10
- 按
排序?
1 2 10 10
- 二分答案+线段树?
确实可以,但老师要除排序线性贪心
其实这题只要按照
排序就行了,但看起来完全不符合直觉,因为你排序甚至和 没有关系。我们证明一下:
显然我们的贪心策略一定不存在空隙和逆序对
考虑任意一个没有空隙的策略 ,都可以通过交换一个逆序对让答案变得不劣
假设 ,则先做 后做 的延迟是: ,先做 后做 的延迟是: 。显然 ,因此交换会更优 - 按
-
设
表示前 轮大的赢赢得最多,显然贪心选 的最小的数。设 表示后 轮小的赢赢得最多,显然贪心。合并求最大
合并会出现重复选的情况,但因为如果重复,不如交换,因为一个最大一个最小,交换后不劣 -
模拟费用流
如果只有两种币,我们可以假设全选 ,然后我们可以按 排序,然后把一些 币换成 币,换言之前 个选 ,后 个选
而有了 ,我们可以枚举 和 的分界点,然后就变成了两个二元问题,直接用上面那个方法做就行 -
从
走到 ,每次可以向右走一步,或 的概率梭哈到 ,或 的概率落到 ,问最优策略下期望时间
通常看到期望题,第一反应是
记 表示 期望时间
显然 有后效性,而且因为有 高斯消元也做不了
我们发现假如 是我们最优的梭哈点,我们从 一步一步走到 ,然后梭哈一把,如果失败了,他跳到了 ,作为一个有贪心思想的人,我们肯定会走到 再梭哈,因为他是我们的最优梭哈点,否则我们不如第一次就在 梭哈 -
非常典的一道题的魔改,因为有负数
判一下就行了,复杂度 -
01背包
数据范围想让
-
tip1:中位数是一个非常抽象的东西,他的难度其实是和求排名不相上下的。而求排名我们要怎么做?二分答案。我们可以二分答案,然后把原问题转化为只有
的情况,这个问题就会相对好做一些
我们发现如果我们遇到两个连续的1 1
,那他会一直往上走,直到遇到边边角;0 0
的情况也同理
所以原问题就变成了找到距离对称轴最近的1 1
和0 0
,不会出现1 1
和0 0
距离对称轴距离相等的情况,因为中间的部分必须是0 1
交替的。所以我们每次取最近的就可以成为答案;如果没有0 0
和1 1
,说明序列一定 交替,直接看对称轴左右的数即可 -
老师曰:期望问题,要么组合计数要么
设
当前在 的期望到 点时间从
走到 ,每次可以向右走一步,或 的概率梭哈到 ,或 的概率落到 ,问最优策略下期望时间
这题我们解决时用了贪心来避免了
的后效性,我们能否把结论同时用在这题上呢?实际上是不行的
我们是不是还在讲二分?我们为什么不二分 的值呢,因为答案显然具有单调性,所以我们就判断即可
其实这个思路在之前的 qoj 的某常比赛里见过,见这里 -
是否还记得我们讲的AGC006D这题?
先考虑一个链会怎么样?会发现对于一个1 1
,他会不断往外扩展,因此在他变成一半 一半 时,操作次数不会超过 -
方法1:因为是竞赛图,有环一定有三元环,缩点
方法2:考虑一个点 ,一定能找到两个点 满足:x -> y x -> z y -> z
那
这条边一定是没有用的,因为如果我们能找到一点 使 成为三元环,那 中一定有一边,如果 ,那 成为三元环;否则 成三元环。因此我们可以把边 删掉
于是在图中把若干条边忽略掉后,每个点最多一个出边,因此我们只要枚举两个点,再看和他相连的点是否成环即可。复杂度
Day7
发现自己的代码功底并没有想象的好,不如说变坏了
T1
把矩阵开成一个邻接矩阵,那
让答案最大,答案就是
老师曰:要注意矩阵的图论意义
T2
倍增+换根即可,但赛时难写
赛时想得线段树二分,也可
T3
曾经某个刷题营的某场比赛
看数据范围,显然分层图
赛时的我考虑对于一个路径用一个中转点建一个类似前缀和的操作,但会有负环,解决方法是对于中转点记录转移前缀,只向后转移,比较麻烦
今天第一次知道分层图跑最短路可以每一层图分别跑,然后合并
我们考虑只建
T4
先观察序列打标,发现有一个规律:毎隔
如果
我们处理
知道
-
- 不能是割点
- 度数为
没了
-
经典性质:连通块个数=保留点数-保留边数
对于保留点数是好算的,考虑保留边数,考虑一条边会对哪些答案贡献,直接算即可
树上也可做 -
一道非常
的题
有点权有边权,很麻烦,我们考虑把边权去掉
把边权放到点权上,每个点权权值为相邻边权
因为如果两个点在两个集合,一减就没有贡献了,而如果两个点在一个集合,一加就会产生边权的贡献 -
看一眼觉得是图论题,但图在哪里?
看到一个二元关系,我们都想给他建一条边对吧?
发现操作有传递性,比如 为一类操作, 为二类操作,那我们可以发现 成为了第一类操作;相同的,第一类操作+第一类操作=第二类操作;第二类操作+第二类操作=第二类操作
既然有传递关系,我们就可以把问题建成一个图,然后看联通块之间的关系。具体的,我们对于一个操作,如果是一类操作边为 ,否则为 ,则两点距离 就是这两点的操作
于是我们可以二分图染色, 边染不同颜色, 边染相同颜色,如果不能染说明出现奇环了,则可以在保证总和奇偶性不变的情况下任意的加减。而如果染成功了,那二分图左右两部分的综合分别是不变的,而且在集合内部无论怎么操作都可以实现 -
先把最小生成树求出来。对于非树边,要想进入最小生成树,他的边权必须比这个环上最大的边小即可;对于树边,考虑所有覆盖他的非树边的权值最小值更小即可。但怎么找呢?我们考虑线段树懒标记的思想,对于一个非树边,他就是让他和树上路径的值取一个
,考虑完所有非树边后更新一遍倍增,把 都 下去,然后直接做即可
这题说明倍增也是可以修改的,对于一些不具有可减性,且先修改后询问的操作,可以用倍增 -
tip1:这道题是差分约束
设 表示 的路径,显然 的所有路径等长,说明 ,但我们不知道边权啊,因此 ,直接差分约束 -
设
表示 左边比他大的位置个数,没跑一次冒泡排序就会让 ,因此答案为 -
题目让求
最小的 ,发现 ,因此 ,我们枚举 ,于是我们让找 ,一减变成 ,复杂度 -
考虑一个朴素的
:设 表示前 个数,最后一个红在 ,绿在 ,蓝在 的方案数,但我们发现 这个限制没有用。我们可以设 表示前 个数,和 不同的在 ,和 都不同的在 方案数。复杂度 -
朴素
:设 表示前 个数组删了 个最大答案。 ,复杂度
这题有一个关键结论:如果 能正好取完一个数组,那一个数组要么不取,要么全取。因为数组是不降的。我们枚举哪个数组不能全取,剩下的做背包即可。可这相当于有一个数是会被删除的,我们怎么办呢?分治即可,设分治到 时表示刨去这个区间中物品的答案,对于每次去左子树时把右子树加入背包,右子树同理 -
可达某场比赛考了这题。
+ 容斥即可。总方案数=所有方案数-过一个黑点+过两个黑点-...。把 个点按照 为第一关键字, 为第二关键字排序。设 表示从左上角走到 这个黑点,带容斥系数,然后每次从左上角的节点转移过来即可
据说有恰好经过 个黑点的加强版问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?