Hello 2024
1|0Preface
好久没打CF了,考完试有空就赶着来打这新年的第一场
由于算起来得有一两个月没有现场打CF了,而且为了准备期末考也两周没摸键盘,因此代码能力有点生疏
D题20min换了两个写法狂WA4发后发现原来是多测清空写假了
E题经典奇妙数数题做不来一点,还好看了眼榜跑路了去把F1写了,最后1h30min准时下班去看漫画去了
没想到这样也能卡卡上分,早知道拿大号打了
2|0A. Wallet Exchange
签到,判断下的奇偶性即可
3|0B. Plus-Minus Split
不难发现以下的贪心策略,若从当前位置开始往后存在某一段的前缀和为,则直接选择这一段;否则单独取一个数即可
4|0C. Grouping Increases
经典小贪心,记录下当前两个序列的末尾的数是什么,不妨记为
考虑对于新加入的一个数,将其放在那个序列后面是最优的
- ,此时直接放在后面,因为这样不会产生贡献并且能把更大的数留下来
- ,此时直接放在后面,因为放在后面会产生贡献,不产生贡献一定比产生贡献要优
- ,此时一定会产生贡献,那么放在后面以保留较大的数
5|0D. 01 Tree
挺新颖的一个题,就是有点细节容易写挂
观察这个树的性质,不难发现对于两个父亲相同的叶节点,它们的权值差一定为
并且这个性质还可以继续推广,对于满足上述条件的节点对我们可以合并它们,得到一个权值为原来两者间较小的节点
那么现在的问题就抽象为,对于给定的序列,每次可以选择两个相邻的并且权值差为的元素,并将其中较大的那个删去,当可以删得只剩下最后一个时即为合法
不难发现删除的过程一定是从大到小最优,但考虑到会有例如这样的情形,中间的要等到边上的删除后才能进行
一个比较简单粗暴的做法就是用并查集把所有值相同的数合并在一起,只要一个在同一个集合中的数有一个可以删除则整个集合都可以删除
剩下的就是用链表维护删除过程了,非常trivial
6|0E. Counting Prefixes
好神奇的题,鉴定为混杂着ATC风格的CF题
考虑设前缀和中最小/最大的数为,则最后序列的和,我们不妨枚举的取值
由于前缀和最大值为,则序列中一定存在一个和为的前缀
不妨用以下方法来构建一个合法的序列,首先列出个,然后后面放个以使得序列的和为
接下来考虑通过不断地往序列中插入二元组来让序列满足所有前缀和出现次数的要求
不难发现在某个前缀和为的数后面插入的影响就是加入一个前缀和为和一个前缀和为的位置
利用这个我们就可以倒推求解了,先根据最后需要有多少个就知道要在后面插入多少个,然后依次类推即可
设为我们需要的的总个数,为处理完后得到的的个数,那么现在我们需要将个插入到已有的个后面,这个用隔板法可以很快算出方案数
具体实现的时候要注意一些细节,比如刚开始那些值出现了两次/一次/零次
总复杂度
7|0F1. Wine Factory (Easy Version)
比赛时候只盯着F1的性质去写了,导致没有看出问题的本质就是个网络流模型,导致完全能写出的F2没写出来
先讲下我的F1的做法吧,注意到我们可以把节点根据的大小关系分成两类,显然每个节点会产生一些贡献,同时会有多出的的值或者的值
那么对于区间也是同理,我们对于某个区间可以维护一个三元组,分布表示这个区间的贡献,这个区间能向后传递的多余的之和,以及这个区间能接收其之前的多余的之和
合并信息的话只要把两个相邻区间的相互共用的情况算一下即可,拿个线段树维护一下单点修改即可
总复杂度
8|0F2. Wine Factory (Hard Version)
其实比赛时候也有想过怎么把F1的做法扩展到F2,但由于没有转化过问题会出现因为一个的修改导致线段树上要改一大片节点的情况,没法处理
考虑将本问题的本质找出来,其实就是个网络流模型,从源点向每个点连容量为的边;每个点向汇点连容量为的边;最后向连容量为的边,最后到的最大流就是答案
转化为最小割后再考虑其性质,我们可以发现一个关键点:和的两条边中有且仅有一条会被割掉
具体的证明可以看官方题解,就是根据可以/不可以到达来分类讨论证明
现在考虑有了这个性质后我们如何抽象问题,不难发现可以对每个用一个字符来表示割掉的是哪条边,最后就能得到一个字符串
对于两个相邻的字符,若满足,则此时仍然存在一条的路径,不满足割的性质,因此要割去这条边
那么我们就很好处理问题了,还是用线段树维护区间,对于每个区间分别记录两个端点的不同取值时得到的最小割,合并的时候讨论一下即可
总复杂度
9|0Postscript
byd好像CF最近抓开小号的现象抓的很严啊,不过无所谓我会顶风作案(水平太低官方肯定懒得查)
__EOF__

本文链接:https://www.cnblogs.com/cjjsb/p/17954283.html
关于博主:复活的ACM新生,目前爱好仅剩Gal/HBR/雀魂/单机/OSU
版权声明:转载请注明出处
声援博主:欢迎加QQ:2649020702来DD我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现