8月做题记录
8月做题记录
✩ trick
✯ 会大部分,要提示
✬ 会小部分/完全没想到,看了才会
◈ 脑电波
✡ 有某一算法的神秘通用性质
⊗ 待补
- 8月做题记录
- PTZ summer 2020 Day1 I
- PTZ summer 2020 Day4 E
- CF1656H ✩✯
- PTZ winter 2020 Day5 D
- CF1270H ✩
- PTZ winter 2021 Day9 A
- ARC181A
- ARC181B ◈✯
- ARC181C ◈✯
- [CF1548E] Gregor and the Two Painters ✬✩
- CF1209G2 ✯✩
- Gym103469I/petrozavodsk summer 2021 Day 3 I ✯✩
- XX opencup GP of Poland E ✡
- 「THUPC 2024」古明地枣的袜子 ✯✩
- ARC181D ◈✯
- ARC181E ✩✬
- qoj8008 ✬
- CF741C ✯✩
- CF1656G ✩
- CF1844E ✬✩
- 2022 ICPC Nanjing C Fabulous Fungus Frenzy/Gym104128C ✩
- Ptz Winter 2020 Day6D Split in Sets ✯
- 1st ucup stage 3 F Flower Garden/QOJ5504 ✬✩
- ARC181F ✬◈✩
- CF1646F ✯
- OpenJ_POJ C23C Empty up a Bottle ✬
- qoj895/Ptz Winter 2021 Day4I Color ✬✡
- UOJ354 新年的投票 ✬◈
- [IOI2023 集训队互测 R8T2] 妙妙题 ✬◈
- OpenJ_POJ C24D Number Solidity ✯
- CF2002C
- CF2002D1/CF2002D2 ✡
- CF2002E
- CF2002F1 ✬✡
- CF2002F2 ⊗
- CF2002G ✯
- CF1994C
- CF1994D
- CF1994E
- CF1994F
- Atcoder dwango2015_prelimsE 電波局 ✩✯
- QOJ1427 Flip
- CF917D Stranger Trees
- qoj2568 Mountains ✩✯
- CF1730F Almost Sorted
- P6647 [CCC2019] Tourism
- ARC117E Zero-Sum Ranges 2 ✩✯
- CF1789F Serval and Brain Power ✬◈
- 「2021 集训队互测」这是一道集训队胡策题 ✯
PTZ summer 2020 Day1 I
显然每次取的都是
当前
复杂度
PTZ summer 2020 Day4 E
因为是不下降,所以最后一定形如
那么考虑如果要枚举
其中
然后考虑固定
复杂度
CF1656H ✩✯
有一个显然的贪心做法,就是每次从
但是这道题数据范围很大,不支持直接算出
证明:
首先肯定最后的这个
值是 的因数,那么考虑这个值 的情况 此时说明
存在某一因子 ,它的幂 是大于所有 的 的幂次的,也就意味着
那么就可以用线段树维护了,对于每个
然后复杂度看似是
考虑当删去一个
PTZ winter 2020 Day5 D
以前考试考过这道题?居然又遇到了
考虑枚举一个集合中最小的弧,则剩下的弧一定至少经过它的一个端点
将剩下的弧分为三类,第一类是和两个端点都有交,这种无论如何都合法,则直接选中,第二类是只与
设
第二类中的弧
也就意味着如果把二类点用
也就是说存在一条不升的分隔线,使得左下方全为三类点,右上方全为二类点,可以
复杂度
CF1270H ✩
可以发现连通的一定是序列上连续的一段区间
那么有一种显而易见的做法就是直接用线段树去维护这些区间,具体的线段树上维护当前区间内的最小、最大值,以及区间内的连通块树以及将其左右两个子区间合并起来过后垮过中间的这个新的连通块是由左子区间的最后多少个和右子区间的开头多少个区间合并而成
复杂度
对于这道题,有更简单的做法
设
那么现在问题转为统计
那么对于相邻的两个值
复杂度
PTZ winter 2021 Day9 A
树剖+
根据
若记录
那么对于点
进一步的,若给某一个点
那么对于操作
对于操作二,则
ARC181A
首先就
答案为
剩下的情况答案为
考虑什么情况答案为
ARC181B ◈✯
出题人和我共享一下脑电波好不好qwq
首先可以根据
然后先判一下,如果
剩下的情况则可以解出
那么去除经过
复杂度
ARC181C ◈✯
把出题人的脑子和我的脑子放在一起,可以共享脑电波吗
有种简单粗暴的想法,就是先把
此时可以发现,因为第
那么可以发现,现在就递归成了一个子问题了,但是如果依旧按照上述方式给
也就是说,我们需要在第一次赋值时保证会至少给以后的所有行都加上至少一个
复杂度
[CF1548E] Gregor and the Two Painters ✬✩
直接维护连通块啥的没前途,考虑用一个点来代表一个连通块
这里取一个连通块中以 (值,i,j)
三维来排序后最小的那个点代表这个连通块,称这个点为代表点,这显然是一个一一对应的关系
那么现在问题就变成了数代表点的数量,代表点需要满足的条件就是不能到达任何一个 (值,i,j)
比它小的点
设
可以发现,一个
可以发现
设
就是一个很普通的二维偏序问题了,扫描线+树状数组可以
CF1209G2 ✯✩
对于值
那么最后答案就是所有极长非零区间的答案之和,显然每个这样的区间独立,而一个区间内的答案就是 这个区间内的点的总数-区间内出现次数最多的同种颜色点的数量
然后把颜色
然后肯定需要线段树去维护,但是可以发现,如果就用
Gym103469I/petrozavodsk summer 2021 Day 3 I ✯✩
肯定要容斥,用
考虑计算有交的方案数,可以分为三种情况,只有两个间有交且与第三个无交,一个矩阵和另外两个矩阵有交且这两个矩阵间无交,三个矩阵两两有交,分别记它们的方案数为
然后一般的题会分别求出
, , 然后把它们加起来,但是这道题不是这样
设
现在就只需要求出
可以发现,当三个矩阵两两有交时,它们的交集一定不为空,进一步可以发现,它们的交集中一定存在一个点
这启发我们先去固定这个最小的
复杂度
XX opencup GP of Poland E ✡
如果能确定每条边是什么时候被删除的,那么就可以直接上
考虑怎么确定每天边是什么时候被删除的,每修改一个点,都会对应去维护其连接的所有边,那么我们肯定想要用
对于一般图的情况,每次取度数最小的点,把与它相连的所有边变成出边,然后删去这个点与这些边,这里的
这是平面图的五色定理,扔个链接在这,什么时候感兴趣了再看证明(
总复杂度
「THUPC 2024」古明地枣的袜子 ✯✩
发现有两个维度,位置
和 时间
,而询问又是关于 时间
的,所以我们直接对操作以位置
这一考虑的因素,现在就只需要处理时间了
将操作排序后每
首先,后面的所有块中的操作的位置都是时间
处于询问范围内的所有操作的
再来考虑当前块中的答案,因为只包含
然后普通的一些做法最后会带
发现我们的操作序列已经对位置进行排序了,而只有位置大的会对位置小的产生贡献,发现很分治,那么分治的复杂度就是
那么只需要
ARC181D ◈✯
牛魔出题人的脑电波,根本对不上
一开始想出了一个维护上升队列的做法,然后发现不可做,不是你往(♯▼皿▼)
模拟这个过程,设当前点
所以只需要求出初始的
复杂度
不是怎么能这么简单,我还说
题不可能很简单吧,就没想啥简单的做法,无语
ARC181E ✩✬
很牛的题!
称满足题目要求的生成树为好的,首先考虑将边
考虑反证,若不是最小生成树,则说明存在一条非树边,它的权值比它连接的两点在树上的路径上的最大边权小,可以发现,这种情况下,该非树边要求的
最小 最大一定不能满足
那么这启发我们去找给边赋值的方法使得求出的最小生成树能够满足其就是好的生成树的办法
- 给边
赋值为 ,最小生成树能保证 是 上最大的点,且此时最小生成树唯一 - 给边
赋值为 ,最小生成树能保证 是 上最小的点,且此时最小生成树唯一
因为两者都保证了最小生成树唯一且它们分别满足一种限制,所以合并起来,也就是满足这两种方式下生成的最小生成树相同,那么就存在好的生成树,否则不存在
那么可以考虑先求出全局的两种最小生成树,那么每次询问时删除的边,如果不在最小生成树中,那么对最小生成树没有影响,否则找到一条权值最小,且刚好连接了断掉这条边后的两个连通块的边,这条新边就是替代原来的边的边(可以用
那么具体实现就可以遍历不在最小生成树中的边
最后查询的时候可以用
复杂度
qoj8008 ✬
呆呆题,但我更呆(´;ω;`)
可以发现,如果我们当前选择了走
也就是说,最优方案一定是先随机走,最后再走
考虑先求出每个点到
复杂度
CF741C ✯✩
我不会构造题/ng
比较一眼的是感觉肯定要
对于一对情侣的限制是好处理的,只需要在两点间连边即可
对于相邻三个不能同色的限制,即要求相邻三个中有两种颜色,考虑直接给它加上更严苛的限制,要求
复杂度
这种就是考虑加强某一限制,然后去证明加强前后无解的情况不变就行
CF1656G ✩
先不考虑循环数列的限制,求出一组
如果连边
合并环
若不存在,则任意取出
对于
复杂度
调整法
CF1844E ✬✩
对于一个左上角和右下角相等
和 右上角与左下角相等
用
设矩阵为
那么变换一下有,
这两个条件对矩阵合法来说是充分必要的,设
然后以为相邻的格子不能相同,所以
对于限制条件,设左上角和右下角相等
类,那么有右上角与左下角相等
类,有
用类似二分图染色的方式判断即可
复杂度
矩阵的构造题应该有很多都会是这种找列与列/行与行的关系啥的,然后染色
2022 ICPC Nanjing C Fabulous Fungus Frenzy/Gym104128C ✩
坏了,看构造题啥都是
如果从起始到终止局面的模拟这个过程,可以发现每一步都非常的“不确定”,即你不能确定当前走与不走这一步有什么区别
考虑从终止到起始局面,此时,覆盖操作就变成了对于左上角一个
因为题目只要求求出合法的方案即可,所以就可以贪心乱搞的做了
这个就是把从起始到终止的操作给倒过来考虑,从终止到起始
Ptz Winter 2020 Day6D Split in Sets ✯
首先,肯定能感受到把每个大的数单独放在一个盒子里肯定是比较优的方案
那么来考虑当前所有数中的最高为
若拥有这一位的数不超过
若拥有这一位的数至少有
复杂度
1st ucup stage 3 F Flower Garden/QOJ5504 ✬✩
二选一,很显然的
考虑只保留一种边,这里保留若
然后
若存在一个
否则所有
令
这里因为两种限制都是想对称的,所以可以只保留其中一种,易证这样做两种限制都能满足
ARC181F ✬◈✩
考虑将序列转移到树上,具体的,维护点
- 若
,则 不动 - 若与
相邻的点中存在代表 的点,则将 移动到这个点上去 - 否则新建一个点
, 挂在 上且 代表
那么现在就得到了一棵树,设起始的
这棵树还有一个重要的性质,若
知道了最终
因为
那么现在就得到了一个链的序列
来考虑
因为
复杂度
CF1646F ✯
感觉可以直接乱搞,就直接把不第
官方做法是先把每个玩家手中的牌都变成
那么考虑证明从任意状态变成每个玩家手中都是一个排列的最小操作数也是
考虑这样一个策略:若当前行不是排列,则一定有把一个重复的牌丢下去更优,而如果已经是一个排列了,那么它丢出和进来的牌一样的牌即可,这个策略显然是最优的
然后可以发现,每这样操作一轮,就会至少有两个人的牌的数量增加了
OpenJ_POJ C23C Empty up a Bottle ✬
若操作
可以发现,若此时
那么假设原本的
考虑扩展这个情况,当三个数均为偶数时,可以一直给它们除
qoj895/Ptz Winter 2021 Day4I Color ✬✡
首先可以前判掉一些初始就不合法的情况,初始图的边不合法或
因为一共有
然后对于每种颜色的边,可以维护一个大小为
那么有
然后考虑每加入一个新点,设它是点
那么就很网络流了,考虑网络流一下
左边
那么可以发现,左侧所有点的出度(
UOJ354 新年的投票 ✬◈
先来考虑
若让第
可以发现,这样能够投票的人是一个前缀,且最后一个能投票的人是第一个
那么会出现问题当且仅当是全
再来考虑
由
最后考虑
它和
我们让奇数对应正数,偶数对应负数
考虑如果我们能确定得到一个不超过
令
因为
将式子化简后并乘上
然后再把
[IOI2023 集训队互测 R8T2] 妙妙题 ✬◈
大概考虑一下如果只看黑白的数量来确定当前点选什么,做不到
也就是说,必须要考虑 位置
这一因素,再想到题目说的是
然后如果在编号确定的情况下,可以选择直接把这条直线设置成
但是因为又要求了看到的相同的话则输出也要相同,且困难模式的编号是不确定的,所以考虑换种能在不知道编号的情况下确定这条线的方案
先考虑若已知所有的点的颜色,那么把所有
上文我们没有管
总结一下就是,假设当前点就是
那么对于原本
OpenJ_POJ C24D Number Solidity ✯
那么现在考虑算不被小于b的数整除且要被b整除且要被a^b整除
+不被小于b的数整除且要被b整除且要被(a^b)^2整除
+不被小于b的数整除且要被b整除且要被(a^b)^3整除
+...
可以去枚举要被b整除且要被(a^b)^k整除
就是
然后看起来复杂度比较爆炸,但是因为实际上各层枚举的上限都很小,所以跑得挺快的
CF2002C
考虑对于一个圆心
然后可以发现,如果所有圆都满足
CF2002D1/CF2002D2 ✡
- 第一种
设点
可以用集合来维护,复杂度
这种其实就是平常用的
- 第二种 ✡
考虑合法的
这种做法可以用
CF2002E
考虑当一个点删空后,会导致它两侧的点相邻,若颜色相同会合并,且我们可以发现,一个点最多只会向左合并一次,那么合并就是
如果给每个点打一个
发现一个点
然后因为每次都是在最末尾加入的新点
每次的答案就是栈首
复杂度
CF2002F1 ✬✡
神秘数学题/ng
不失一般性的假设
设
所以所有的
再来考虑第二大的质数
此时有所有的
可以发现,现在这个证明也不会,但是可以打表证明喵
CF2002F2 ⊗
孩子们我看不懂官方题解写的什么玩意,看英文原文感觉读不通,看翻译的中文看不懂,等谁发了
我去学了再补(
CF2002G ✯
看到
考虑
因为从
这样复杂度是
然后可以发现,如果
复杂度
CF1994C
若已固定
那么只需要二分求出从
复杂度
CF1994D
若
如果每一个
考虑什么时候会找不到合法的
但是如果我们让
复杂度
CF1994E
考虑每棵树对答案的贡献,发现如果它对答案贡献多次,则可归总为
复杂度
CF1994F
首先将有
存在回路当且仅当所有的点的度数为偶数,那么根据有
若存在回路,则显然要满足这个条件,大胆猜测是否只要满足这个条件就一定存在回路了,那么就需要找到一种构造方案
对于每个没有
然后求出所有存在
复杂度
怎么
queue<pair<int,int>>
的空间这么大?直接交上去就了/youl
Atcoder dwango2015_prelimsE 電波局 ✩✯
小登推荐的
题
首先肯定会先把坐标轴扯一下,把等边三角形扯成直角等腰三角形,直角在左下方
先说我昨天晚上想到的一个做法,维护那些未被覆盖的空白部分,发现这些部分可以被切割成许多矩形和直角等腰三角形(这个的直角在右上)
然后按
不太会严格证明,但是应该确实只要分隔的方案比较合理,或者有一个合并操作,使得不会出现太多散的块,应该每次插入后新产生的块数是
这样应该也是
嗯,想想就很难维护,然后说说小登的做法
扫描线,从下往上扫,然后维护边界的形状,可以发现每个三角形会对应覆盖边界的某一区间,然后就可以类似
当时想的时候没想到
然后这里一定是每个三角形只会覆盖一个区间,因为每个区间只记录下最优的覆盖它的三角形的话,若当前插入的
那么每次插入的时候,先遍历一遍所有区间,更新一下每个区间的状态并计算答案,一次是
QOJ1427 Flip
简单计数题
若在加入第
那么对于一个询问
前面一半是算的
然后大概把每个部分给分离开就可以预处理单独计算答案了
复杂度
CF917D Stranger Trees
完全图,求生成树个数,很容易的想到
设
那么只需要求出
设
这里的背包复杂度是
那么有
总复杂度
qoj2568 Mountains ✩✯
既然是要求任意一条路的权值和都不能超过
可以发现,只要知道了
那么现在只需要求出合法的
这里是个
因为
那么我们让第
这样就能转换成
复杂度
CF1730F Almost Sorted
发现
进一步的,可以发现,对于几个数,它们的最大值和最小值的差
于是考虑
然后
复杂度
P6647 [CCC2019] Tourism
有种比较暴力的做法,就是设
复杂度
然后这个转移可以优化一下,发现
复杂度
ARC117E Zero-Sum Ranges 2 ✩✯
首先知道,若
那么
把前缀和放到坐标轴上,变成一个折线图,发现只要起点是
一张折线图的
这里有个
那么考虑
那么转移时,
然后可以发现
复杂度
CF1789F Serval and Brain Power ✬◈
非常欺诈性的题
考虑暴力,枚举
然后因为跑不慢,
当
于是就可以枚举
这部分的复杂度是
「2021 集训队互测」这是一道集训队胡策题 ✯
考虑枚举列为
发现对于每一行,如果这一行中
设必选
如果不存在这样的行,那么方案数就是
复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)