Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

Codeforces Round #691 (Div. 2) 题解

  • A

不多说了吧,直接扫一遍求出 ri>bi 的个数和 ri<bi 的个数

  • B

稍微打个表找个规律就可以发现,当 n 为奇数的时候,答案为 (n+1)(n+3)2,当 n 为偶数的时候,答案为 (n2+1)2

  • C

考虑 gcd 的另一种计算方式,gcd(a1,a2,,an)=gcd(a1,a2a1,a3a2,,anan1),那么就有 gcd(a1+x,a2+x,,an+x)=gcd(a1+x,a2a1,a3a2,,anan1),预处理出 G=gcd(a2a1,a3a2,,anan1),然后对于每组询问,输出 gcd(G,a1+bj) 即可。

  • D

首先要明确的一点是,我们不会出现回倒的情况,就是从杯子 x 倒到一个杯子 y,再倒到一个杯子 z,因为这样还不如 x 直接倒到 zy 直接倒到 z
于是本题变为选择 k 个杯子 i1,i2,,ik,将所有其它杯子里的水倒到这 k 个杯子里,这样总共能容纳 min 的水。
然后就可以 dp 了,dp_{i,j,k} 表示在前 i 个杯子里选择了 j 个杯子,这 j 个杯子的 a_i 的和为 k,最多能容纳多少水。时空复杂度均 n^4

  • E

现场被这题区分了/kk
首先要明确的一点是 LRUD 和 IC 肯定不是同一类的。如果 s 中只包含 LRUD,那此题就变得异常简单。直接维护两个标记 x,y 表示行/列分别位移了多少就可以了。
重头戏在于 I 和 C。首先我们要理解 I 和 C 的本质。
对于排列 p_1,p_2,\dots,p_n,我们如果把每个元素看作一个二维坐标 (i,p_i),那么这个排列的逆元相当于 (p_i,i),即交换两维坐标的值。
I 和 C 也是如此。如果我们把这个矩阵看作 n^2 个三维空间里的点 (i,j,a_{i,j}),那么 I 操作其实就是交换 x,z 坐标的值,C 操作其实是交换 y,z 的值。
这样一来这题就很好做了,对于 LRUD,记录每一维的增量,对于 IC,记录当前每一维是原来的第几维,这样每个操作都可以 \mathcal O(1) 解决了。
看到没?什么超纲的算法都没有。所以啊,菜是原罪/kk

  • F

现场试图看这道题结果什么思路都没有。
考虑记 0-11+1,这样可以得到一个长度为 |s| 的由 +1-1 组成的序列。
然后对这个序列做一遍前缀和,并连一条 s_i\to s_{i+1} 的有向边,这样可以得到一张图,一个欧拉回路就对应着一个字符串。
考虑题目中那个奇怪的操作的本质。假设我们对区间 [l,r] 进行操作。既然 [l,r] 要求 01 个数相等,那么肯定有 s_{l-1}=s_r,而翻转+反转实际上等于将这些边反向。所以实际上该操作等价于选择一个环然后将环上所有边反向。
这里需要观察出一个性质:就是操作前后,原图所包含的边集 E 是不变的。因为每次操作是将边反向,所以如果把有向边改为无向边,那么边集显然是不变的。又由于我们操作的是一个环,所以对于一条边 (x,y)x\to yy\to x 的次数是一样的,所以 x\to yy\to x 在操作前后出现次数都是相同的。
有了这个性质,我们还需观察出另一个性质:原图任意一条欧拉回路(起点和终点必须与初始相同)代表的都可以由原字符串进行一系列操作得到:首先我们假设原路径与当前路径在 x 位置出现了分歧,一个走了 x\to x+1 的边,一个走了 x\to x-1 的边。而这两个路径终究还是要走 x\to x-1x\to x+1 的边的,所以肯定有一条边 x+1\to x,也有一条边 x-1\to x,此时我们选择 x\to x-1\to x\to x+1\to x,并将其翻转,看看会发生什么。此时我们惊奇地发现,原来先走 x\to x-1 的路径改走 x\to x+1 了!以此类推,最后两个路径一定会重合。
于是此题就变为:求字典序最小的欧拉序。直接贪心就可以了。
看到没?什么超纲的算法都没有。所以啊,菜是原罪/kk

看到没?什么超纲的算法都没有。所以啊,菜是原罪/kk

posted @   tzc_wk  阅读(168)  评论(1编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· C# 13 中的新增功能实操
· 万字长文详解Text-to-SQL
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· 卧槽!C 语言宏定义原来可以玩出这些花样?高手必看!
点击右上角即可分享
微信分享提示