AtCoder ABC F
FF
81 / 267
*ABC126F - XOR Matching(Difficulty: 1770)#
神奇构造,感觉是能独立做出的。
比较 naive 的情况:若
其余情况,将
而当
ABC127F - Absolute Minima(Difficulty: 2003)#
首先修改的
*ABC128F - Frog Jump(Difficulty: 2464)#
这是我最讨厌的一类题。
青蛙每走两次所经过的路程是相同的,记其为
0, a, a + d, a + 2d, ..., a + kd = n - 1
d, 2d, 3d, ...,
发现这是两个以
枚举
由于
还有一步判重。发现每次多经过的点的位置,
总的来说感觉还是挺好的题。
ABC129F - Takahashi's Basics in Education and Learning(Difficulty: 2621)#
居然没做出来。
容易想到分长度考虑。列出式子,一开始想着能不能把式子拆开算,发现有一部分可以倍增计算,另一部分没法算。
原来直接矩乘就行了。
*ABC130F - Minimum Bounding Box(Difficulty: 2240)#
想了大概十分钟,想加写用了 39 分。写挂是因为没注意题目中方向定义比较反常。
发现在同一个方向上,貌似对一个方向只有 3 个点是有用的:同向移动,垂向移动,反向移动中最靠外的点,因为其它点都不能同类的点。这三种点再取相交的时刻,这些时刻是有用的时刻,总共只有
看了一圈洛谷发现题解区大多是三分的,不过三分确实容易实现多了。
ABC131F - Must Be Rectangular!(Difficulty: 1937)#
稍微手模一下可以发现貌似最后会形成一个“网格图”,但是有一些点所在的行和列不会在这个网格图中。仔细分析一下,发现一个点
ABC132F - Small Products(Difficulty: 2143)#
容易发现这样的贡献可以整除分块计算。一开始试图整除分块+动态开点线段树,结果 TLE 了。
首先有一个结论:如果整除分块分出来每一个块左端点为
于是设
*ABC133F - Colorful Tree(Difficulty: 2330)#
fydj 曾经跟我说过的题。
颜色问题考虑值域分治。对于边中出现次数多于
而出现次数较少的,先算出原本的距离,枚举每条这种颜色的边,如果在路径中,则加上变化量。
平衡一下可以做到
另一种方法用持久化权值线段树,第
*ABC134F - Permutation Oddness(Difficulty: 2532)#
可能是之前杂题讲了,看到大家都做了,我没做过。这就是偷懒的后果。
想了 3 分钟就放弃了,一个是因为好多人做过,另一个是没什么想法。
套路:
-
绝对值式子拆贡献,拆成正的和负的。较小的数贡献为负。例如这题里面,考虑为下标和值分配正或负的贡献。
-
排列本质上相当于有两个
到 的集合,将两个集合中的元素两两匹配。
考虑从小到大分配贡献,枚举
设
那么转移是不难的。
ABC135F - Strings of Eternity(Difficulty: 2388)#
想了 15 分钟,写了 18 分钟,没调就直接过样例了,结果数组开小 RE 了。
一开始还有点怕这个串串题。发现题目中的复制操作相当于用
其实不难。
ABC136F - Enclosed Points(Difficulty: 2334)#
这题是紫色的?(笑)。25 分钟以内过了。
这种问题很经典地反过来考虑,考虑每一个点会被哪些矩形包含。直接考虑也不太行,考虑容斥。假设每一个点被
用一些东西求出每一个点一侧,左上等方向的点数,很容易求。
*ABC137F - Polynomial Construction(Difficulty: 2402)#
神仙构造。
给定素数
看到的时候想着直接拉插是不是就做完了,但是我没写过求系数的拉插,也不知道咋写。看了下题解,给出了一种高妙的做法。
由于
*ABC138F - Coincidence(Difficulty: 2431)#
几乎要想出来了。
感觉这个取模和异或就没啥关系,怀疑是不是诈骗。所以先考虑若
当时想到进一步推广到
所以只需要考虑
总之就是,第一,只有
设
*ABC139F - Engines(Difficulty: 2034)#
结论题。
将所有向量按照极角排序,那么最后一定会选定一段区间。证明考虑如果中间有一个向量不选,将这个向量选上一定不劣。
直接暴力可以做到
然而有一个更强力的结论:最后选定的向量在一个平角内。证明:假设确定了最后方向,那么所有与这个方向相差不超过 90 度的向量选上一定不劣。比如说最后想往
有了这强有力的结论,可以直接双指针维护。但还有一个神秘做法:将所有向量的反向量加入,扫到反向量时删除,这样就不用手动维护了。
ABC140F - Many Slimes(Difficulty: 2105)#
贪心题,被任意难度的贪心卡死。
容易想到尽可能用较大的史莱姆。所以就写了一个 dfs,每次选一个最大能选的史莱姆,然后 WA 了。仔细想想,这样可能在递归左儿子的时候浪费了较大的史莱姆,导致右儿子没得选了。
所以要换成 bfs,就能过了。
ABC142F - Pure(Difficulty: 1919)#
BFS 都不会了。
容易发现题目要求找一个环,但是有一个神秘限制:环点为点集的导出子图必须是一个环。没有意识到本质是找最小环。
最小环都不会找。直接选定一个终点
*ABC143F - Distinct Numbers(Difficulty: 2277)#
之前模拟赛好像做过一道很类似的题目,想用那个题的方法。大概就是直接线段树维护每一个数有多少个,用一点 trick 就可以维护。由于每一个
正确的想法是:正难则反。
考虑一个操作次数能够贡献哪些
则能够贡献的最大的
将
ABC144F - Fork in the Road(Difficulty: 2189)#
没想到结论。朴素地枚举每一条边删除再 DP 容易做到
但是如何优化呢?这时候不要考虑优化,考虑缩小枚举边的范围:对于一个
ABC145F - Laminate(Difficulty: 2116)#
水题。直接离散化然后 DP 一下,前缀和优化一下即可。
瞄了一眼洛谷题解区,感觉我的做法很劣。我设了三维的状态,其实有一维是不需要的,因为每一个
ABC146F - Sugoroku(Difficulty: 1545)#
不知道是懒得思考还是为什么,连青题都不会了。
由于每一次可以走的步数是
*ABC147F - Sum Difference(Difficulty: 2393)#
没想到啊。感觉还是很好的。
首先容易注意到,若
等差数列通项为
到这里我就不会了。
考虑
但是可能会有形如
考虑对于一个
ABC148F - Playing Tag on Tree(Difficulty: 1457)#
大水题 (我不会告诉你我直接看题解了)
求出两人到某个点距离,如果先手距离小于后手,那么用后手距离更新答案。
ABC149F - Surrounded Nodes(Difficulty: 2208)#
水题。拆贡献。考虑每一个点是白色的时候有多少种方案使得这个点被黑色连通块包含。
ABC150F - Xor Shift(Difficulty: 2281)#
不难。发现如果满足题目的条件,那么
ABC151F - Enclose All(Difficulty: 1671)#
模板题。求最小圆覆盖。应该可以直接退火乱搞过,毕竟数据范围这么小。
最简单的暴力做法是枚举两个点或三个点,再暴力判断形成的圆是否包含所有点,时间复杂度
改进的方法是:增量构造。维护一个当前的答案圆。从
这样做是正确的,考虑若加入
这样是
但是可以证明,随机点的顺序之后期望复杂度为
这样就可以通过 P1742 最小圆覆盖。
实现时直接用斜截式很方便,但是随机旋转一个角度防止斜率不存在。
ABC153F - Silver Fox vs Monster(Difficulty: 1393)#
纯纯水题。贪心地,从左到右考虑,如果当前怪兽还有生命值,就需要一些炸弹,贪心地将炸弹放在当前怪兽的下标加
ABC154F - Many Many Paths(Difficulty: 1775)#
求从
*ABC155F - Perils in Parallel(Difficulty: 2738)#
一眼看过去,除了线性基没有别的想法。
由于是区间操作,所以可以差分后转化为两个点翻转,目标是使得所有点为
由于是点对问题,考虑建图。如果图中有环,环上的边全选等于不选,断掉环上任意一条边都是等价的。所以可以考虑求出一个生成森林,然后在生成森林里面进行树形 DP。
如果根是
*ABC156F - Modularness(Difficulty: 2150)#
完全没有想法。
这样的形式显然是要找循环节。但是模之后小于这个限制不好刻画,正难则反,容斥成求等于和大于的。
等于的是容易的,只要求
+ABC157F - Yakiniku Optimization Problem(Difficulty: 2525)#
计算几何题,求两圆交点,不会,直接退火。被卡。乱搞,直接表出答案作为初值,水过去了。
ABC158F - Removing Robots(Difficulty: 2067)#
感冒了,太难受了,没有想出来。
按照
ABC159F - Knapsack for All Segments(Difficulty: 1876)#
水题。设
ABC160F - Distributing Integers(Difficulty: 2048)#
亦是水题。题目等价于确定一个树上染色顺序,要求每一个时刻染过色的是一个连通块。直接 DP 计算方案数。对于多个根只要简单换根即可。
ABC161F - Division or Subtraction(Difficulty: 1528)#
水题,竟然做了 20 分钟,太失败了。
观察一下,减法不会改变对
🍭ABC162F - Select Half(Difficulty: 1764)#
偶遇黄题强如怪物,拼尽全力无法战胜。我直接 D 题解了。
ABC163F - path pass i(Difficulty: 2470)#
爆切紫题 _ 虽然说不是正解。
正难则反,用总的点对数减去不经过任何颜色
看来我做复杂了,但是跟 zlt 想到一块去了。有线性做法,口胡一下:记录
ABC254F - Rectangle GCD(Difficulty: 1764)#
思考用时 6 分,调了挺久。
由于有加法,很不好弄。尝试找一些性质。发现同一行里,
所以维护
括号是出错的地方。
ABC389F - Rated Range(Difficulty: 1642)#
发现如果将初始 Rating 排序之后,由于 Rating 变化都是 1,那么每一个时刻 Rating 都是有序的。所以用线段树维护,每一场比赛在线段树上二分找到在范围内的,然后区间加一即可。
ABC390F - Double Sum 3(Difficulty: 1801)#
套路:代表元。
竟然连绿题都不会做了?
每一个区间的“值的段数”,这个东西很难刻画。所以使用代表元,即用每一个段中最大的值来代表这个段,那么只需要统计每一个位置被作为代表元的次数和即可。
当一个数
ABC394F - Alkane#
水一个 AC Count 并且填满最近 28 场的 F 题
大水题。乱 DP 一下就能过。
作者:Terminator-Line
出处:https://www.cnblogs.com/Terminator-Line/p/18729424
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话