ARC127 比赛记录

打烂了。
被 A 卡了。
胡了 B 然后直接 skip 了。
被 C 卡了较长时间。
回头过 B。
卡了 D。

A

1n 所有前缀数前缀 1 个数和。
求出至少有一个长度为 k 的前缀 1 的个数之和。
枚举 k 然后枚举这个前缀出现位置即可。
复杂度 O(poly(15))

B

直接构造。
发现第一位肯定有 n0n1n2
然后第一位的 01 不管只需要第一位的 2 后面跟着的最小即可。
直接暴搜搜出前 3K1 个最小的,然后直接填即可。

C

直接做做完了。
考虑先整体减一,第一位肯定是 1 然后诸位确定。
如果当前数是 0,那结束了。
否则如果属于 [1,2m1) 肯定是 0,否则是 1
如果属于 [1,2m1) 那最高位就是 0 否则是 1 所以可以 O(1) 判断。
然后如果最高为是 0 就减 1 否则删去最高位。
根据结论对于一个二进制模拟进位复杂度均摊是 O(1) 的。
然后判断是否全 0 直接动态维护当前全局 1 个数即可。

D

卡 @AhoCorasick 的
我们需要判断 aiajbibj 的关系。
考虑比较两个二进制数,是找到他们最高不相同位置然后比较,本质上就是
那我们对于每个 i 我们把 aibi 作为代表,那两个数不同只需要比较代表元最高的不同位即可。
我们考虑在最高不同位处统计贡献。
考虑把所有当前这位是 0 的答案塞到桶里去,然后在对每个 1 在桶里查询。
有贡献当且仅当:它之前相同(信息量 O(n)),当前这位不同。
然后贡献计算需要每位拆开,同时还需要记录贡献的是 a 还是 b
这里直接分类讨论一下即可。
总复杂度是 O(nlog2n)

E

草,思维题!!!
考虑把最终集合排序,然后找到字典序最大的。
显然就是每次 1 操作插入 1 时最大。
如果字典序大于这个最大字典序肯定无解(听君一席话)
如果小于,必定有解。
考虑构造,设那些在答案中出现的为目标状态,然后从小到大排序。
从小到大逐个插入,如果碰到 2 就拿个不是答案来“垫背”。
可以证明对于每个数“垫背”的数一定存在,所以它肯定可以被构造。
然后搞个 O(n2) dp

posted @   Peal_Frog  阅读(305)  评论(6编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示

目录导航