9月杂题
[ABC310F] Make 10 Again
分母是
首先要发现投出了
思考如何计数,发现转移依赖于前面的点数和的方案数,而且
[ARC174E] Existence Counting
怎么就没想到呢??一直想着直接计数,比较困难,正难则反,转化为:排列数
[ARC173C] Not Median
感觉还是不够。
直觉告诉我们,答案大多数都很小。
注意到答案很大的地方周围应该长这样 -+-+-+0-+-+-+
,这告诉我们只需找到两个相邻的值又同时在
每个点都往左右扫,复杂度看似
[ABC281G] Farthest City
将所有点按最短路分层,每层的节点只能和相邻层还有层内的节点连边。设
CF1476F Lanterns
典题,覆盖问题可以将状态设计成
转移分三类:
- 前面不能覆盖到
,直接不管 , 。 - 前面能覆盖到
, 。 - 将
向左,找到一个 最小的 ,然后 全部向右, 。
不知道为什么想这么久,明明这么简单。
[ARC154C] Roller
有 ARC182B 作为基础这题很容易想到做法,将相同的合并成一块,只需判断是否存在一个断点使得
但是还需要空余的位置,可以是
细节一直写挂,数组还开小了。
P3214 [HNOI2011] 卡农
想不出来。
设
再减去
再减去
最后输出
P3577 [POI2014] TUR-Tourism
在无向图搜索树上 DP,没见过。
由题得树的深度不超过
一个重要的性质:无向图 DFS 树上的非树边一定是回边,不存在横叉边。所以我们可以状压父亲的状态。
DP 过程较为复杂,不写。
P6381 『MdOI R2』Odyssey
通过质因数分解我们很容易判断是否能构成完美数对,但是信息在边上我们很难直接 DP。
但我们发现如果用哈希去表示每一条边,那么能与它配对的边的哈希值也是确定的。这启发我们设
P8860 动态图连通性
很牛逼。
首先肯定要离线,然后多次询问的边只有第一次有用。
记边被询问的时间为
类似 「The classic problem」一样用主席树维护最短路。
CF464D World of Darkraft
需要注意到
[ABC370F] Cake Division
不会倍增的菜鸟了属于是。
二分答案,记
P7603 [THUPC2021] 鬼街
减半警报器。
一次灵异事件的发生可以暴力给所有质因子
对于一个
如果 check 失败,我们让阈值变成
[ARC171C] Swap on Tree
每棵子树最多
初始化
P6383 『MdOI R2』Resurrection
其实就是联通块的根之间连边。
容易想到设
因为
考虑分析图的性质,然后就发现儿子连的边一定不会与父亲连的边交叉,要不连父亲,要不连父亲连的点的上面。分析出这点,然后就可以枚举父亲连的点进行转移了。
P6009 [USACO20JAN] Non-Decreasing Subsequences P
静态区间查询,考虑猫树分治。
如何合并两个前后缀信息,记
P3523 [POI2011] DYN-Dynamite
二分答案,如何判定?
转化成满足条件的最小覆盖。(用最少的点)
如果一个子树的根到这个子树的关键节点的最远距离
初始化
转移
还有一些情况需要特判
时, 子树已经无需覆盖, 。 时,我们此时必须选择 ,则 , , 。 且 时,说明这棵子树不能被子孙覆盖,需要留给父亲, 。
贪心 + DP,根本做不出来。
P8292 [省选联考 2022] 卡牌
大于
对每个组预处理出
然后对组做 DP,设
问题在于每个质数在不同的合法方案中会被选择不同次数,考虑正难则反,枚举不含的质数集合,使用容斥解决。设
P2150 [NOI2015] 寿司晚宴
仍然考虑设
正常考虑设
CF1810F M-tree
先考虑单次询问怎么做。可以二分答案,然后让每个点尽量往深度大的放。这样就可以得出答案
P6576 [BalticOI 2017] Plus Minus
思考怎么才能固定整个矩阵,需要固定第一行和第一列。考虑什么时候才合法,发现必须第一行或者第一列是正负交错的。
然后你又发现,当第一行是交错的时候,每一行都是交错的。列同理。所以这时候就可以容斥计数了。
P5188 [COCI2009-2010#4] PALACINKE
这是一道挺困难的题。
首先不管买东西种类的限制,设
转移矩阵自己想。那么在没限制的时候可以直接矩阵快速幂进行转移。
现在如果有了限制那该怎么办?考虑容斥,用总方案数减去不合法的方案数。每次只保留是选定集合子集的边。时间复杂度
反思:正常写出 DP 是带状态
一张
个点的有向图,求从 开始走恰好 条边,回到 的方案数。其中 。
引出。这个问题的解决方法就是矩阵快速幂。但是此题更为复杂,不是恰好,边权也不一定为
P5664 [CSP-S2019] Emiya 家今天的饭
枚举菜的个数
每次最多只有一种主要食材不满足条件。枚举主要食材
瓶颈在于计算不合法方案的时候。
我们发现
CF1980G Yasya and the Mysterious Tree
维护每个点到根的异或值
不难发现修改操作只对深度为偶数的点产生影响,记录修改操作的总异或值
CF1994G Minecraft
考虑枚举每个位置填什么,一个关键的地方在于一个位置最多向前产生不超过
转移时根据填的数算出
CF1823F Random Walk
将每个点的期望写出式子
思考特殊性质,因为这是一棵树,于是考虑将每个点的期望写成和父亲有关的式子。
设
CF1495D BFS Trees
先考虑只有一个点怎么做,以
然后就不会了。
注意到若
CF1736E Swap and Take
观察到每个位置被覆盖的数的下标是单调递增的,于是设
- 若
和 一样,则 。 - 若不同,观察到此时
必须大于等于 ,不然为啥还会不同。于是 。
想出了差不多,但还是差最后一点。感觉自己分类分的太过细致反而影响了思考。
CF1981E Turtle and Intersected Segments
一个关键的地方在于如何缩减边数规模。注意到若三条线段两两相交,假设
考虑用扫描线维护这个过程,每条线段在
CF1493E Enormous XOR
果然是一个结论题。
若最高位不相同则直接输出
否则,我们希望选择奇数个,这样最高位才能为
我们已知模
P8819 [CSP-S 2022] 星战
如何判断一个点是否可以「实现反击」,其实就是形成基环森林。
「连续穿梭」则要求每个点出度为
如何维护,使用和哈希。
具体的,给每个点随机一个权值
[ARC160F] Count Sorted Arrays
这它喵是人想出来的吗??
有一种 01 串的经典技巧:把小于等于
假设我们得到了 01 串
每次操作,若所有排列的
[ABC328G] Cut and Reorder
套路的设
但其实我们肯定只用一次交换操作就达到最优的排列,所以我们可以直接 DP 维护这个过程。每次找到一段连续区间接上
CF1530F Bingo
容易想到容斥,计算满足所有行列对角线都至少有
先考虑只有列的情况。再次容斥,用全部情况减去至少一列全为
然后在计算列的同时枚举行计算行的概率。设
枚举对角线的状态,时间复杂度
[ABC319G] Counting Shortest Paths
想着先求出最短路,但是只会
想到用 set 维护未被访问的点,但是没想到可以只走要删除的边然后再求补集。然后这样就可以求出最短路。
然后按照最短路分层,先让每个
时间复杂度
P11071 「QMSOI R1」 Distorted Fate
考虑线段树维护区间内的数二进制下每一位的
修改操作相当于将
查询操作考虑每一位的贡献,二分出第一个
时间复杂度
进一步的优化是,维护每一位的与、或,然后也比较简单。
P9220 「TAOI-1」椎名真昼
博弈论!
发现最多一个回合即可确定胜负。
A 赢就是要找一个黑点,操作一次就全白,可以 tarjan + 拓扑 + 搜索实现。
B 赢只有三种情况:
- 全白。
- 两个孤立黑点。
- 一个黑点连向一个白点。
P9871 [NOIP2023] 天天爱打卡
设
发现只有段上的点有用,对端点离散化后套用上述做法,时间复杂度
P6879 [JOI 2020 Final] スタンプラリー 3
一定要看数据范围做题!
设
发现这种状态的转移一般是
P10430 [JOISC 2024 Day1] 鱼 3
问题即用最少的单点减
暴力做法就是从
考虑将询问离线,然后扫描线,每次加入一个
反思:好像啥都可以离线扫描线。
P8162 [JOI 2022 Final] 让我们赢得选举
有一个直观的想法,枚举协作者数量
但这是有问题的,可能一个
于是我们加入一些 DP 来修改贪心。
设
反思:当贪心出现问题的时候,尝试使用 DP 来进行修正。
P9522 [JOISC2022] 错误拼写
牛魔计数题使我旋转。
主要说一下分析思路:
根据字典序的比较方式我们可以转化一下
字典序暗示我们要从后往前 DP,于是设
这个约束就是对于一段
于是设
计数题好难。
長距離バス
发现每次赶走的人一定是一段区间。而这个区间的末尾必须紧跟着一个服务区,不然后面的人会被影响。
设
如果不下车,
如果下车,考虑枚举这段下车区间的上一个人
对第二类转移使用斜率优化即可。
P9331 [JOISC 2023 Day1] Passport
线段树优化建图。
让
接下来就是注意力惊人了,我们注意到,在最优方案中,存在一个时刻,该时刻之前每一步同时向左右扩展,该时刻之后每一步只向一边扩展。
所以设
建出反图,跑两次 dij 可以求出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?