131 字
1 分钟
CF ans
CODEFORCES
NEUQ_ACM
PROBLEM_T
分析:
- 初始A和B 为(,)
- A和B可以将自己减半,加给对方,称为一次操作
- 给定目标结果(x,2^(k+1)-x),求解最少操作步数使得初试ab变成目标结果
- 很自然的一个思路就是bfs,把每一步操作所能到达的情况保存下来,一层一层往下推,
但是这种方法我不会写代码
在草稿纸上画一画过后,有如下思路:

#include <bits/stdc++.h>using namespace std;int t;int main(){ //freopen("t.out", "w", stdout); cin >> t; while (t--) { long long k, x, ans[121]; for (int i = 1; i <= 120; i++) ans[i] = 0; cin >> k >> x; if ((int)pow(2, k) == x) cout << 0 << endl << endl; else { long long a, b, cnt = 0, sum = (long long)pow(2, k + 1); a = x, b = sum - x; while (a != sum / 2) { if (a < b) a *= 2, b = sum - a, ans[++cnt] = 1; else b *= 2, a = sum - b, ans[++cnt] = 2; } cout << cnt<<endl; for (int i = cnt; i >= 1;i--) cout << ans[i] << " "; cout << endl; } } return 0;} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
素数判定算法
算法 从试除法到 Miller-Rabin,ACM 中判定素数的全套武器——试除、筛法、概率判定,以及什么时候该用哪个
2
纯新手入门 Agent 编程(Vibe Coding)指南——从零搭建你的 AI 编程助手
教程 零基础新手如何用 Cherry Studio + DeepSeek 搭建 AI Agent 编程环境,实现 Vibe Coding(氛围编程)——一种面向结果的自然语言编程方式。从 Git 安装到 Agent 配置,完整图文教程。
3
贡献法学习笔记
算法 从史莱姆困难版学到的贡献法——换一个问题,交换求和顺序,是ACM从铜牌迈向银牌的核心思维模式
4
Lenovo Legion Q7CN 风扇控制协议 — 完整逆向记录
硬件 逆向 Lenovo Legion Pro 7 (Gen 10, Q7CN BIOS) 风扇控制协议全过程。从 USBPcap 抓包失败到 WMI 缓冲区破解,最终实现在 Linux 上控制三风扇曲线。含完整协议格式、Windows/Linux 实现代码。
5
ST 表(Sparse Table)
算法 区间最值查询(RMQ)的倍增解法,Sparse Table 原理与模板
