题解:洛谷 P11785 「FAOI-R4」手写的从前

embedded/2025/2/25 11:10:44/

题目https://www.luogu.com.cn/problem/P11785赛时写出来的,可惜报名晚了一些(大概 1h),卡在第 363 名。

首先,我们对 m 进行二进制拆分,拆成若干个二的幂相加的形式。

随后,如果这个序列的长度本身就是二的幂次方,直接输出。

否则,从最小的不是 1 的数开始拆分,每次拆成这个数的一半(有两个),序列长度加 1

一旦序列长度达到了二的幂次方,直接输出结果。

实现

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t,n;
vector<int>v,ans;
int check(int x){int tmp=__lg(x);return (1<<tmp)==x;
}
void BIT(int x){v.clear(),ans.clear();string s="";while(x){s+=to_string(x%2);x/=2;}priority_queue<int,vector<int>,greater<int>>q;int pr=1;for(auto z:s){if(z=='1'){v.push_back(pr);q.push(pr);}pr*=2;}if(check(v.size())){for(auto z:v){cout<<z<<' ';}}else{int suv=v.size();while(true){if(q.top()==1){ans.push_back(1);q.pop();}else{break;}}while(true){if(q.top()==1){q.pop();ans.push_back(1);continue;}suv++;int p=q.top();q.pop();q.push(p/2),q.push(p/2);if(check(suv)){break;}}while(q.size()&&q.top()==1){ans.push_back(1);q.pop();}for(auto z:ans){cout<<z<<' ';}while(q.size()){cout<<q.top()<<' ';q.pop();}}cout<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);for(cin>>t;t;t--){cin>>n;BIT(n);}return 0;
}


http://www.ppmy.cn/embedded/165036.html

相关文章

YOLO11改进-模块-引入混合结构模块Mix Structure Block 提高多尺度、小目标

在图像去雾领域&#xff0c;传统的基于卷积神经网络&#xff08;CNN&#xff09;和 Transformer 的方法存在局限性。CNN 方法大多存在感受野不足的问题&#xff0c;限制了单个像素在神经网络中的参考范围&#xff0c;部分考虑大感受野的 CNN 方法又忽略了图像的多尺度特性&…

IP----访问服务器流程

1.访问服务器流程 1.分层 1.更利于标准化 2.降低层次之间的关联性---每一层都只完成自身层次所执行的功能--每一层都在下层的基础上提供增值服务 1.应用层 抽象语言---编码---提供人机交互的接口 2.表示层 编码--二进制&#xff0c;压缩解压缩、格式转换 3.会话层 建立…

C/C++高性能Web开发框架全解析:2025技术选型指南

一、工业级框架深度解析&#xff08;附性能实测&#xff09; 1. Drogon v2.1&#xff1a;异步框架性能王者 核心架构&#xff1a; Reactor 非阻塞I/O线程池&#xff08;参考Nginx模型&#xff09; 协程实现&#xff1a;基于Boost.Coroutine2&#xff08;兼容C11&#xff09;…

Node.js技术原理分析系列——Node.js的perf_hooks模块作用和用法

Node.js 是一个开源的、跨平台的 JavaScript 运行时环境&#xff0c;它允许开发者在服务器端运行 JavaScript 代码。Node.js 是基于 Chrome V8 引擎构建的&#xff0c;专为高性能、高并发的网络应用而设计&#xff0c;广泛应用于构建服务器端应用程序、网络应用、命令行工具等。…

DeepSeek 与后端开发:AI 赋能云端架构与智能化服务

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;后端开发正经历一场深刻变革。从传统的 REST API 到…

`sh` 与 `bash` 的区别详解

sh 与 bash 的区别详解 1. 历史背景 sh (Bourne Shell)&#xff1a; 由 Stephen Bourne 在 1977 年开发&#xff0c;是 Unix 系统的默认 Shell。语法简洁&#xff0c;但功能有限。 bash (Bourne Again Shell)&#xff1a; 由 Brian Fox 在 1989 年开发&#xff0c;是 sh 的扩…

面试-JVM:JVM的组成及作用

JVM包含两个子系统和两个组件&#xff1a; 两个子系统&#xff1a; 类加载子系统&#xff08;ClassLoader Subsystem&#xff09; 作用&#xff1a;根据给定的全限定类名&#xff08;如&#xff1a;java.long.Object&#xff09;来装载class文件至运行时数据区的方法区。 核心…

WPF 实现虚拟键盘

一、引言 在某些特定场景下&#xff0c;我们可能需要使用虚拟键盘来替代实体键盘&#xff0c;比如在一些触摸设备应用中&#xff0c;或者需要对键盘输入进行特殊监控和处理的场景。本文将详细介绍如何使用 WPF 来实现一个虚拟键盘&#xff0c;并监控键盘输入&#xff0c;从而达…