CF1557总结
CF1557总结
Codeforces Round #737 (Div. 2)
先看了 A 。意思是要把序列分成两个子序列,使得两序列各自平均值的和最小,输出最小值,要求 \(O(n)\) 。想半天然后猜结论,搞了十来分钟结果发现好像可以直接拿最大的分一组。其他的分一组,然后几分钟打完发现是对的。
然后看B,是问把序列断成 \(k\) 块,再重拼能不能给他排好序。看到 \(T \le 10^3\) ,\(N \le 10^5\) ,以为是 \(O(n)\) ,但我只会离散化然后统计有几个地方要断开,而离散化是带 \(log\) 的。于是放下 B 看了 C 。
C 很有意思,是一道数论题。问有多少构造正整数集合 \(S\) 方案可以使得其与和大于等于异或和。题目中对 \(S\) 的限制还有:必须包含 \(n\) 个元素,且每个元素都要小于 \(2^k\) 。显然,最后一个限制是说元素二进制下为 \(k\) 位。那我们套路地考虑从大向小的一个比较过程,因为位运算中每一位是独立的,而且如果前面的位有了区别,那后面的位是没有贡献的。考虑从当前位开始比较,那么当有奇数个 \(1\) 且不是所有数都是 \(1\) 时,对答案没有贡献(异或和比较大)。当有偶数个 \(1\) 而且也不是全 \(1\) 时,还是分不出大小,所以这些情况需要留到下一位去解决。有奇数个 \(1\) 而且全都是 \(1\) 时,也是不分大小。而当有偶数个 \(1\) 且全部是 \(1\) 时,已经可以对答案进行贡献了。然后把每种的当前位方案数,得到的贡献算一下,然后递归或者递推一下就行了。
这时候回到 B ,发现数据范围其实是 \(\sum n \le 3 \times 10^5\) ,那就用前面提到的 \(O(n\log n)\) 离散化做法即可。
然后来看D,就是问,给定一个长度为 \(n\) 的有序序列,每个元素是一个区间集合,最少删去多少个,使得剩下的序列中,每两个相邻的区间集合都相连,相邻两个区间集合连在一起定义为 \(S_1\) 中某个区间与 \(S_2\) 中某区间有交集。总区间数为 \(m\) 。复杂度要求是 \(O(n\log n)\) 级别。我乱想半天,什么鬼都没想到,就想到均摊 \(O(nm)\) 的能否连的预处理。估计着也写不出来了,于是弃疗,口胡起来。结果口胡一个 DP ,三维。乱想两下,发现可以变成一维。即设 \(dp_i\) 表示已经处理前 \(i\) 个区间集合,且最后一个保留的区间集合是 \(i\) 时,最小的删除数。然后考虑转移时 \(dp_i = \min \{ dp_j +(i-j-1)|j\text{与}i\text{相连}\}\) 这时候如何做到 \(O(\log n)\) 转移。显然要离散化,然后我最开始想到要把 \(j\) 用挂表法挂在塔包含的区间中,然后就可以访问到每一个可能转移的 \(j\) 。继续优化,考虑转化方程,提出 \(i\) 来,就是\(dp_i = \min \{ dp_j -j|j\text{与}i\text{相连}\}+i-1\) 这样,我们就不需要挂表了,直接考虑在这个区间的最小值更新一下。想到这里,显然可以直接线段树维护一下。至于复杂度,总的区间数是 \(m\) 个,离散化后要 \(4m\) 个位置,所以复杂度实际上是 \(O(n+m\log(4m))=O(m\log m)\)。可惜的是,到最后结束5分钟才写出来,而且懒得再维护方案了(光是求答案就花了25分钟)。结束后,PCQ 说这个题很套路,反正我是没见过这类的套路,不过我的思路确实绕了个大圈子才想到正解。
E 也蛮有意思,是个国际象棋交互,你控制后,对面有只王。你不知道王的位置,但知道你每走一步后王往哪个方向走了。要求你在 \(130\) 步内让王无路可走。CZA 说有点感觉了,和吟唱的金色花海有点像。
CF1557总结的更多相关文章
随机推荐
- SqlServer基礎
REVERSE(欄位) 反轉 CHARINDEX(篩選字符,欄位,[start]) 例:CHARINDEX('/',ProImage,13) 從13位查詢/所在索引 SUBSTRING(欄位,star ...
- vue 3.0 总线程bus引入(mitt)
vue 3.0 移除了 $on,$off 和 $once 方法,$emit 仍然是现有 API 的一部分,因为它用于触发由父组件以声明方式附加的事件处理程序. 官方推荐使用第三方类库. mitt举例 ...
- About TopoJSON
An extension of GeoJSON that encodes topology! TopoJSON https://github.com/topojson/topojson The To ...
- Delphi播放铃声
两种方式: 一.简单直接 uses MMSystem; procedure TFmSound.playBtnClick(Sender: TObject); begin PlaySound(PChar( ...
- net core swaagger ui 报 Failed to load API definition错误
在net core webapi用swaagger 报错记录,截图如下 解决办法,出现这种是因为我的controller里面的有一个方法确缺少了HttpGet attribute就是auction上 ...
- 记录 springboot 整合swagger2 出现documentationPluginsBootstrapper&&NullPointerException异常
记录 由于springboot版本高 整合swagger2出现null异常 springboot 版本: swagger2 依赖版本: 出现的异常: 解决方案: application 添加如下依赖 ...
- REPLACE,TRANSLATE
REPLACE 1.语法 replace(string,from_str,to_str) 2.说明: 针对string,将from_str中的字符替换为to_str中字符. 3.示例: /**说明:( ...
- solve--ifconifg命令提示没有该命令解决方法
一.如果你/bin目录下有ifconfig,则是命令路径没有在环境变量中添加,很多新装的linux系统都会存在这种问题 打开/etc/profile文件 命令: vi /et ...
- 性能测试-dstat以及sar(网络相关数据查看)
1.dstat参数说明 # 安装 yum install dstat -y dstat命令不加任何参数时,会收集CPU.磁盘.网络.分页.系统的数据信息,每秒收集一次.缺省参数时相当于dstat -c ...
- ES-索引库
数据准备 本次学习涵盖ES简单查询,聚合查询,所以在创建测试库时会可以涵盖一些个性化字段,用于学习搜索用法 索引创建 几个疑问 1.能否用中文命名 安排:我用"蓝闪test",中英 ...