AtCoder ABC 杂题记录
ABC 做题记录
ABC001-099#
Nothing Yet.
ABC100-199#
*ABC141F(Difficulty: 2342)#
题意:给出一个长为
解法
不难注意到,若某位有奇数个
将这部分的答案先算上,将这些位都改成
ABC200-299#
ABC200E#
题意:定义一个三元组
ABC214F#
水题。
题意:对于一个串
解法:
容易想到 DP,设
ABC217F#
细节还是考虑得不够,如果没有大样例就寄了。
题意:
解法:
一开始毫无头绪,后来一想这不就区间 DP?直接设 f[i][j]
表示区间 [i,j]
删空的方案数,转移考虑将 i
和 j
配对删空,或是将区间拆成两半,方案数相乘,再乘一个组合数。
然而喜提 WA,为什么?当合并三个区间时显然会算重(合并 1,2 再合并 3,与合并 2,3 再合并 1)
所以需要钦定一下使得它无法算重。具体来说,钦定右区间不是由若干个区间合并得来的。枚举断点
ABC239F#
题意:给定一个
解法:
想到可以用并查集维护联通信息,每一次找两个未满足条件的一个连通块中不满足条件的点连起来。
但是这样会有问题,具体来说,样例过不了。
事实上,问题出在只有一个点度数和需求相差一的连通块上。假设现在有三个连通块,有两个与要求相差 1,有一个相差 2,可能前两个连通块相连了,整个图就不连通了。
所以每一次相差 1 的块要尽可能和相差大于 1 的块连接。如果没有相差 1 的块,则无解。如果没有相差大于 1 的块,就要求相差 1 的块恰好有两个,否则无解。
无解情况真多。
ABC249E#
感觉挺水的,不知道怎么就评到一千九了。题意是说对于一个字符串,定义压缩形式为字母加重复次数。例如 aaaaabbbc
被压缩为 a5b3c1
。
求有多少个长度为
解法:
一看就是直接 DP,暴力 DP 设
ABC259Ex#
fydj 告诉我的题目。
给定
解法:
这种分颜色考虑的,经典做法是值域分治。
首先容易想到,枚举两个颜色相同的位置分别作为起点和终点,用组合数计算。假设有
另外,还可以 DP 计算,设
平衡一下,当某种颜色出现次数不超过
ABC265F#
题意:在
解法:
一想就发现每一维好像是独立的,可以设 DP
发现每一维相当于是一个数轴,距离两个点
-
对于在
和 之间的情况,假设到 距离为 ,到 距离为 ,那么 到 的距离 是一个定值 。记其为 ,那么有转移 ,发现如果记录所有和为 的 之和,就能 转移了。注意这里要限制 和 ,所以记 表示和为 前 不超过 的点数即可。 -
另一种情况,有转移方程
,在另一侧类似。容易发现维护 表示 也可以做到 转移。
做的时候刚开始还想假了,还调了挺久,35 分钟的题做了 80 分钟。还不是因为不够努力。
感觉挺板,或者说挺自然,但是不知道为什么是紫题。
ABC275Ex#
题意:给定两个序列
解法:
转化:每一次必然操作一个极大的区间
以
设
有结论若以
那么可以用 slope trick 优化,利用 map 启发式合并。具体可以参考 这篇题解,感觉讲得很清晰。
一开始启发式合并还写假了。
ABC297F#
题意:给定一棵树,边有边权,点有点权。要求选出任意条边,使得每一个点相连边中选中的边数量不超过点权,求最大选中边权和。
解法:
唐了,写了一个假的 DP,直接寄飞了,做了一个半小时破防了。
设
ABC300-399#
ABC348F#
这题洛谷评分是黄,题意是说给
解法:
这个数据范围很奇特,正解是 bitset,看了洛谷题解,发现暴力用位运算,不用 if
,交 clang 或者开火车头可以过,就没有写 bitset。
ABC356F(Difficulty: 2152)#
题意:
给定常数
有
-
1 x
,若 中有 ,则将其删除;否则,将其插入。 -
2 x
,保证 在 中,询问 所在连通块的大小。
解法
首先连通块在值域上连通。
若维护
ABC358F#
要求在
解法:
讨论一下,模拟一下。
ABC359F#
题意:
给定
解法:
贪心,唉。
一棵树总度数为
ABC360F#
给定
求
解法:
将相交的条件进行转化,例如
如果将
原问题变为矩形覆盖,查询平面单点最大值。扫描线即可。
注意
ABC360G#
题意:给定一个长度为
解法:
解法:发现只要 LIS 中出现两个相邻位置的差值大于 1 并且位置差值也大于 1,或是首或尾不在 LIS 中,答案都可以增加 1。一样用树状数组维护,但是同时记录 LIS 末尾为某一个值的最长情况下的最小位置。这样就可以转移了。
ABC363F#
题意:给定数字 *
号,这个算式的结果需要等于
解法:
直接暴力?
设
若表达式形如 s*rev(s)
,可以转化为 s*1*rev(s)
。若 s
比 rev(s)
大,则交换两者,仍然合法。
枚举
这样看起来很暴力,题解中有证明复杂度是
ABC365F#
SB 题,做得我破防,不做了。
ABC368E#
E 比 F 和 G 难?
题意:
有
现在列车要晚点了,第
-
若有
满足 且 ,要求 仍然成立。 -
换句话说:若可以从列车
换乘到列车 ,那么晚点之后仍然要满足条件。
解法:
做了一个小时的差分约束,你告诉我正解是贪心?
看到那个式子非常好,直接差分约束,发现边数爆炸,直接前缀和优化。发现有正有负,数据范围跑不了 SPFA,想起来 [ABC232G] Modulo Shortest Path 的建图技巧,可以参考一下。建完跑出来发现一组约束都无效,应该是要建负边,跑最长路,已经浪费一个小时,懒得改了。
实际上,按照
这里要求
ABC368F#
直接 D 了,绿色的。
有一瞬间我是想对了:是不是直接转化为 NIM 游戏,但是不知道为什么被我否掉了,转而一个奇怪的方向,然后 WA 飞了。
ABC368G#
如果我做这场是不是要输麻了?不会 E 不会 F 不会 G?
给定两个长为
-
给定
,将 变为 。 -
给定
,将 变为 。 -
给定
,求一下问题的最大答案:- 初始令
, 从 枚举到 。将 替换为 或 ,最后 的值是多少?
- 初始令
保证操作 3 的答案不超过
解法:
一开始以为保证答案不会爆 long long
是为了不用写高精度,其实只要想一想就知道
所以用
ABC369F#
30 分钟。
水题,直接求 LIS 就行了,但是排序的时候没有按双关键字排序,直接卡了我二十分钟。
ABC372F#
16 分钟。
设
ABC377F#
题意:给定一个
解法:
每一个皇后的攻击可以表示为四种直线,每一条直线覆盖的位置数量很容易计算。但是会有重复计算的。
将这些直线去个重,每一种直线内部互相平行,一定不会重复覆盖一个格子。任意两种不同直线只有一个交点。
枚举两条直线,计算交点。用 map 存下每一个交点被计算次数。若一个点,
-
被计算 1 次,说明有两条直线覆盖了这个点。
-
被计算 3 次,说明有三条直线覆盖,即,
。 -
被计算 6 次,说明有四条直线覆盖。
ABC378F#
直接 DFS,当时赛时一眼鉴定为点分治,写了很久,还一直 WA,破防了,最后发现是没有统计分治中心的贡献。
挺水的其实。
ABC380F#
暴力题,直接求 SG 函数。
ABC382F#
水题,秒错了,火大!
基础线段树区间取 max 练习题。
ABC383F#
水题,但是没有秒切。
ABC384F#
居然不太会做,赛时没做出来。
题意:
定义函数
给定长为
ABC385F#
题意:
有
ABC386F#
写假了,83 个点只 WA 了 6 个点?要不是被我自己 Hack 了可能一直都是 WA 的。
题意:给定两个串 a 和 b,求经过至多
-
插入一个字符。
-
删除一个字符。
-
修改一个字符。
字符串长度
解法:
一开始的想法是,设
然而一直是 WA 的过不去。后来出了一个 hack:
2
aaaaaaab
eaaaaaa
这显然是可以的,但是按照上面的方法做会输出 No。这是因为由于我们希望尽可能匹配长的 b 串,所以
正确的做法需要考虑此题当字符串长度很小的那个经典做法:设
ABC388F#
题意:
有
保证给定区间递增且互不相交。
解法:
考虑维护能够走到的位置集合,应该是一个区间的形式。假设当前能够走到
由于
注意到当
ABC388G#
题意:
有
给定
保证
解法:
对于一个区间,必定是选择某一段等长前缀和后缀,然后从左往右配对。考虑二分答案,拿出前
容易发现,每一个饼,满足能够堆在其上面的是一段前缀,预处理出能放在其上面的最大位置
作者:Terminator-Line
出处:https://www.cnblogs.com/Terminator-Line/p/18701987
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话