当前位置: 首页 > news >正文

Codeforces Round 1048 (Div. 1) A Cake Assignment 题解

A / d2C Cake Assignment

BC 两题题解可以看 cf 题解,不过 A 有更本质的做法

难度(个人感觉):\(\star\star\)

  • op 1 若让 Chocola 删除,那么 \(x \rightarrow x/2\)

  • op 2 若让 Vanilla 删除,那么 \(x \rightarrow x + (2^{k+1} - x) / 2\),即 \(x \rightarrow x/2 + 2^k\)

sol 1 逆推

我们可以由结果推导用了哪个操作,若操作后 \(x > 2^k\) 则使用了 op2,若 \(x < 2^k\) 则使用了 op1,显然上一步 两个数都不是 0,那么 x 不等于 \(2^k\)

逆向递推即可。这是大部分人的做法,但是实际上没有说清楚这个操作到底干了什么。

sol 2 操作的实质

还是从逆推的视角开始。如果最后一步 x 的 \(2^k\) 这位是 0,那么前一步使用了 op 1,否则使用了 op 2。

关键是,这次操作只会影响第 \(2^k\) 这一位。那么之前的操作决定了 \(2^0, 2^1,...,2^{k-1}\) 这些位。

归纳一下,倒数第二次操作决定了 \(2^{k-1}\) 这位,倒数第三次决定了 \(2^{k-2}\) 这位。设一共由 t 次操作,那么第 \(i\) 次操作决定了 \(2^{k-(t-i)}\) 这位。特别的,初始值是 \(2^k\),那么第 \(2^{k-t}\) 位是 1,而 \(i < k - t, 2^i\) 这位是 0。

那么 \(k - t\) 实质上是答案的最低的 1 的位。 \(i\) 次操作由 \(2^{k-(t-i)}\) 这位的值决定。

http://www.zskr.cn/news/672.html

相关文章:

  • Linux中的字符设备和块设备详解和应用区别
  • Gitee DevOps:本土化研发效能引擎的崛起与突破
  • 在Docker容器中运行TaichiSLAM
  • 计算机图形学 - 渲染 - stone-stone
  • docker,docker-compose安装 - 小
  • Pickle 发布 Whisper 主动式桌面 AI; 吴恩达:不懂计算机原理,就不可能只靠「Vibe Code」变优秀丨日报
  • 爬楼梯 VS 跳绳
  • pb9新建“数据库”选项卡中文说明
  • 开源中国:构建国产开源新生态,驱动智能研发新时代
  • 第一次作业-自我介绍+软工5问
  • 灌区数字管理平台建设方案
  • 题解:P11622 [Ynoi Easy Round 2025] TEST_176
  • Docker 镜像生成与下载
  • 深入理解版本号比较:从原理到实现
  • 并不是真的路过而已 / 也不是真的不会想你 - Urd
  • CF1644题解
  • 花椒直播首次开源推流器组件 为鸿蒙开发者提供高性能推流解决方案
  • winform定时任务
  • 基于Python+Vue开发的旅游景区管理系统源码+运行
  • 剑指offer
  • nvm安装与配置
  • Exadata计算节点的内存出现故障,导致CPU耗尽
  • 磁盘控制器与磁盘驱动器的关系
  • 【GitHub每日速递】从编程小白到造轮子高手,免费资源 + 实战指南全给你
  • CF1725D Deducing Sortability
  • 集合框架2
  • [机器人] 产业研究之【人形机器人】
  • 因果图灵测试(Causal Turing Test, CTT),为判断AGI是否真正实现的唯一终极标准。
  • 1111
  • Codeforces Round 1048 (Div. 2)