CF1800-2200
CF1575K Knitting Batik
首先不难分析,如果两个矩形不相交,方案数为
对于两个矩形不完全重叠的情况,显然在两个矩形之外的部分可以随意涂色,重点考虑两个矩形之间的一些限制。对于第一个矩形,在不与第二个矩形相交的部分没有限制,可以任意填色。在对这部分填色时,第二个矩形相应位置的颜色也就确定了,由于两个矩形相交,所以也对应了部分重叠位置的颜色,就是一个不断对应的过程,直至把两个矩形填满。
最后总结出来就是除了第二个矩形之外的位置都可以随意涂色,方案数就是
CF1579G Minimal Coverage
设最长线段长度为
我们发现这道题并没有一个保证正确性的一个贪心策略,对于每一条线段它向左或向右放置都是有可能的,当然前提是答案不能超过
dp 状态:
具体地,对于第
向右放时注意判断到左边界的距离不能超过
CF1580C Train Maintenance
根号分治
发现火车使用是有周期性的,
对于
对于
注意删除时判断当前火车是否在修,若在修因对答案减
CF1607G Banquet Preparations 1
设
分别表示鱼肉总重、猪肉总重、最多能吃的鱼肉数量和最多能吃的猪肉数量。
不妨设
下面进行分类讨论:
1.
2.
下面我们来构造。
设答案为吃
那么方程就是:
解得:
CF1607H Banquet Preparations 2
首先显然只有
对于第
对于每道菜都求出
那问题就可以转化为在数轴上有若干条线段,我们要在数轴上放最少数量的点,满足每条线段上至少放一个点。
贪心
将区间按右端点从小到大排序。首先对于最左侧的线段,我们必须在上面放一个点,考虑贪心地将这个点放在最右侧,那么这个点所能覆盖的线段最后的答案相同,将这些线段删除,再重复操作。
CF1615D X(or)-mas Tree
发现我们只关注 popcount 的奇偶性,而
将路径上的异或和转化成两个点到根的距离的异或和。那么如果两个点之间的路径奇偶性等于
因此转化为了这样一道题:有两个集合,第
最后遍历整棵树,如果当前节点和它的子节点不在同一个集合,那么边权为
CF1547G How Many Paths?
首先可以判断输出
从节点
1.
2.
对于打上
最后,还没有被打上标签的,节点
CF1555E Boring Segments
双指针
首先将线段按照权值排序,双指针的过程中,加入一条线段
CF1575L Longest Array Deconstruction
考虑对于两个点
1.
2.
同时,我们稍微推一下这个不等式,发现它也满足:
所以这就变成了一个二位偏序的问题。
将所有数字按照
CF1598E Staircases
很容易想到一个暴力的 dp,
考虑修改
CF1606E Arena
发现每个英雄在每轮结束时受到的伤害是一样的,那么设
明显我们不能让场上只有一个英雄剩下,那么在 dp 过程中忽略掉
每一轮对每个英雄的伤害是
CF1593F Red-Black Number
因为
CF1616E Lexicographically Small Enough
设
对于每一个位置
对于前者,每次从当前位右边找到最近的
所以我们对字符集里每个字符按顺序记下其出现位置。这样,每次要找到最近的某个字符,就取该字符最早的没有被使用过的出现位置。
CF1551E Fixed Points
由于把前
CF1613E Crazy Robot
考虑一个点想要走到实验室,那么它周围的空单位(已经确定为 '+' 的不算)只能有一个或者没有。所以直接从实验室 bfs 即可。
CF1616D Keep the Average High
首先将所有的
对于
CF1548B Integers Have Friends
可以发现最后答案区间内的数作差 gcd 大于1,维护一个差分数组,求出最长的子区间使得该区间 gcd 大于1。用 st 表和二分求解即可。
CF1554C Mikasa
设最终答案为
令
我们按位考虑(从高位到低位),用
那么一共有四种情况:
1.
2.
3.
4.
CF1556C Compressed Bracket Sequence
首先一个显然的性质是任何序列数量都不为零,表明每一对左右括号序列至少会产生
设此时给出
我们将多出来的设为
1.显然不能再对当前数对产生贡献。
2.对后面新的数对且右括号多的与之产生贡献。
3.而在与后面的右括号匹配的同时,也意味着它跨过了至少两个数对,会产生额外的贡献。
注意细节统计即可。
CF1560E Polycarp and String Transformation
首先很容易得到结论:从字符串
然后我们统计出每个字符出现的次数,设为
如果任意一个
求出初始串长度后,按照题中的操作过程得到的解检验一遍即可。
CF1572A Book
如果想要理解第
CF1582F1 Korney Korneevich and XOR (easy version)
我们发现值域非常小,考虑用值域来解决这道题,用数组
CF1575D Divisible by Twenty-Five
数据范围很小,暴力即可。
CF1611F ATM and Students
双指针,每一次向右移动一次右指针,然后不断向右移动左指针直到满足条件,这个过程中维护当前剩下的钱即可。
CF1582E Pchelyonok and Segments
如果从前往后考虑,我们不知道第一个区间长度是多少,因此从后往前 dp。设
转移时首先
由于区间长度不超过
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现