20241021-1031杂题记录
gym105173I
题意:长度为
求所有位置都是好的的序列数量,
实际上是用若干个排列去覆盖整个序列。
设
枚举上一个完整排列的结尾:
总方案为
时间复杂度
gym105173L
题意:求操作序列个数,使得 ()
能变为合法括号序列
- 在序列最右边添加一对括号,即
- 选取合法区间
,使 。
(......)
能被加入当且仅当其范围内所有 ()
已被加入。
换句话说,他能加入当且仅当 ()
的标号。
这能够推出,第 ()
能被加入当且仅当
设 ()
数量为
从后往前考虑(这保证了 (.......)
,在
时间复杂度
P10091 [ROIR 2022 Day 2] 分数排序
单组询问显然可以二分,
时间复杂度
P10092 [ROIR 2022 Day 2] 网络系统升级计划
设
根据选不选
注意到对
P10093 [ROIR 2022 Day 2] 礼物
题意:删除
相同值的元素之间存在不确定性,规定先删大再删小,值相等的先删下标大的。
枚举
只关心
设
中间移项容易在枚举
查询某一区间的最大前缀/后缀和可以 ST 表做到
从大到小在值域上扫描,链表维护每个
P10087 [ROIR 2022 Day 1] 跳跃机器人
记
不难得到,
考虑
。 。
两个条件同时成立就是充分的,即
这样就在
P11088 [ROI 2021 Day 1] 穿孔卡片
从上往下放置每个卡片。
卡片可以放置当且仅当其未被挡住且不为空的位置与答案串相同。
把当前卡片的矛盾位置(没被挡住且与答案不同)视为其度数。
能被加入当且仅当其度数为
P10089 [ROIR 2022 Day 1] 回文数组
哈希的结果是可加的,设正串的哈希值为
那么两部分合法当且仅当
当长度确定时不同的
如果奇偶性确定,答案是可二分的,时间复杂度
CF568E(加强)
题意:给出一个不完整排列
钦定某些原先位置保留在 LIS 当中,形如
现在要在
对于每个
设
记
将
P4093 [HEOI2016/TJOI2016] 序列
设
存在显然的转移:
转移需要满足三维偏序,考虑分治。
solve(l, mid)
解决左区间;左区间更新右区间;solve(mid + 1, r)
右区间内部更新。
这样在左区间更新右区间时,左边的DP值已经是最终的了。
时间复杂度
P7170 [COCI2020-2021#3] Sateliti
设计一种二维哈希:
这样可以
枚举最终方案的左上角,二分比对两种方案最长公共行数,再二分出最长公共列的位置。
把原矩阵复制成四份能够少判很多情况,时间复杂度
P7172 [COCI2020-2021#3] Specijacija
把原树划分为若干长链,两点在长链上上下移动不会改变他们的lca。
给每个长链选出代表点,所有叶子节点以及
主席树自下而上维护每个点对应长链上的代表点,每到一层相当于合并两条链(删一个代表点,改一个代表点)。
注意询问是祖先后代关系的情况,时间复杂度
1023模拟赛T1
gym105173I
题意:长度为
求所有位置都是好的的序列数量,
实际上是用若干个排列去覆盖整个序列。
设
枚举上一个完整排列的结尾:
总方案为
时间复杂度
gym105173L
题意:求操作序列个数,使得 ()
能变为合法括号序列
- 在序列最右边添加一对括号,即
- 选取合法区间
,使 。
(......)
能被加入当且仅当其范围内所有 ()
已被加入。
换句话说,他能加入当且仅当 ()
的标号。
这能够推出,第 ()
能被加入当且仅当
设 ()
数量为
从后往前考虑(这保证了 (.......)
,在
时间复杂度
gym105173G
题意:
数据范围:
P10091 [ROIR 2022 Day 2] 分数排序
单组询问显然可以二分,
时间复杂度
P10092 [ROIR 2022 Day 2] 网络系统升级计划
设
根据选不选
注意到对
P10093 [ROIR 2022 Day 2] 礼物
题意:删除
相同值的元素之间存在不确定性,规定先删大再删小,值相等的先删下标大的。
枚举
只关心
设
中间移项容易在枚举
查询某一区间的最大前缀/后缀和可以 ST 表做到
从大到小在值域上扫描,链表维护每个
P10087 [ROIR 2022 Day 1] 跳跃机器人
记
不难得到,
考虑
。 。
两个条件同时成立就是充分的,即
这样就在
P11088 [ROI 2021 Day 1] 穿孔卡片
从上往下放置每个卡片。
卡片可以放置当且仅当其未被挡住且不为空的位置与答案串相同。
把当前卡片的矛盾位置(没被挡住且与答案不同)视为其度数。
能被加入当且仅当其度数为
P10089 [ROIR 2022 Day 1] 回文数组
哈希的结果是可加的,设正串的哈希值为
那么两部分合法当且仅当
当长度确定时不同的
如果奇偶性确定,答案是可二分的,时间复杂度
CF568E(加强)
题意:给出一个不完整排列
钦定某些原先位置保留在 LIS 当中,形如
现在要在
对于每个
设
记
将
P4093 [HEOI2016/TJOI2016] 序列
设
存在显然的转移:
转移需要满足三维偏序,考虑分治。
solve(l, mid)
解决左区间;左区间更新右区间;solve(mid + 1, r)
右区间内部更新。
这样在左区间更新右区间时,左边的DP值已经是最终的了。
时间复杂度
P7170 [COCI2020-2021#3] Sateliti
设计一种二维哈希:
这样可以
枚举最终方案的左上角,二分比对两种方案最长公共行数,再二分出最长公共列的位置。
把原矩阵复制成四份能够少判很多情况,时间复杂度
P7172 [COCI2020-2021#3] Specijacija
把原树划分为若干长链,两点在长链上上下移动不会改变他们的lca。
给每个长链选出代表点,所有叶子节点以及
主席树自下而上维护每个点对应长链上的代表点,每到一层相当于合并两条链(删一个代表点,改一个代表点)。
注意询问是祖先后代关系的情况,时间复杂度
P9768 [ROIR 2021 Day 2] A+B
给每一列赋予两种属性:
- 会不会往下一位进位:
。 - 需不需要上一位进位:
。
发现
所有列转化为
我们发现一旦一个数的第二位为
同理如果一个数的第一位为
最后的答案一定形如
和 数量相等,且两两配对。 只能加在一对 中间。 只能加在开头,结尾,或一对 当中。
到此步为止,已经容易计数不考虑前导零的方案数了。
考虑容斥,钦定开头是
gym101754a
给三种字符分别随机一个
一个串合法当且仅当:给
这是因为每次必然是相邻相同的字符相消,替换为矩阵后可以用结合律得到
交换
- 替换
。 - 将
的所有 改为 , 改为 。 - 将
的所有 改为 , 改为 。
枚举哪两种字符参与交换(实际枚举不交换的那个)。
预处理某些东西可以
给矩阵做哈希,在 map
中查找
P11092 [ROI 2021 Day 2] 莫斯科数字
设
P9863 [POI2021~2022R2] arm
进行如下转换:构造长度为
(一次
当
枚举
P8315 [COCI2021-2022#4] Šarenlist
钦定一条链颜色相同,相当于把某个边集合并为连通块,方案数就是
P8314 [COCI2021-2022#4] Parkovi
二分答案,考虑这么一个贪心:选的点深度越浅越好。
设
这样不是很完备,因为可能
设
如果
特别的,如果
记
P9691 [GDCPC2023] Base Station Construction
以区间为切入点不好做(如今年T2的贪心),考虑在数轴上做这个问题。
P2567 [SCOI2010] 幸运数字
有
所有组合中,不超过
**P4381 [IOI2008] Island **
给出图是一张基环树森林,求所有基环树的直径(最长简单路径)和。
分两类:不经过环,树DP;经过环,求出环上每棵树的最大深度,单调队列优化枚举。
代码写了一坨。submission
P7205 [COCI2019-2020#3] Drvca
以下默认整个数组有序。
贪心的将能选的数都加入
如果
因为我们已经钦定了
从后往前枚举,同时 map
维护
P7981 [JRKSJ R3] system
题意:给定一个序列,每次同时使
第一步:
第二步:
原图是一个内向基环树森林。
对于每个点而言,如果
否则跳入环中,对环长取余。
AT_dp_y Grid 2
设
将关键点排序(
即
P11238 「KTSC 2024 R1」铁路 2
以下默认树的边权为正。
- 距离
最远的点一定是某条直径的一个端点。 - 所有直径重合于一点,或一条路径,路径外的分支长度相等。
具体证明 @dbxxx:Link。
设到
通过上述两点是容易说明的。
按
P11240 「KTSC 2024 R2」回文判定
对于每个
记返回值为
,一定不是回文。 ,合法当且仅当 ,仍需判断,将 和 加入集合 。 , ,将 加入集合 。
调用
现在已经检验了所有
如果
否则设
否则检验
「KTSC 2024 R2」岛屿
随便取一个三角形,内部加一个点并构造生成树。
不断往上加三角形,加的两条边染不同色即可,是一个拓扑排序状物。
原三角形每个顶点都同时属于两棵生成树。
新加入的点分别与两颗生成树相连,维持了这一性质,且无环连通。
P1117 [NOI2016] 优秀的拆分
记
枚举
一个合法的
考虑关键点
记横跨
如果
否则
考虑一个关键串的左右端点
由于
不难得到
P2150 [NOI2015] 寿司晚宴
暴力状压每个数的质因子,做 01 背包。
对于
根据这个大因子进行分组,显然每组至多被一个人选,分组dp即可。
剩下
P2178 [NOI2015] 品酒大会
建出后缀数组。
从大到小枚举
加入所有
一个连通块对应
这恰好满足题目需求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话