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

题目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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/976170.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【无人集群系列---无人机集群编队算法】

【无人集群系列---无人机集群编队算法】 一、核心目标二、主流编队控制方法1. 领航-跟随法&#xff08;Leader-Follower&#xff09;2. 虚拟结构法&#xff08;Virtual Structure&#xff09;3. 行为法&#xff08;Behavior-Based&#xff09;4. 人工势场法&#xff08;Artific…

Linux项目自动化构建工具-make/Makefile (linux第六课)

目录 背景 介绍 依赖关系的格式 依赖方法的格式 原理 背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之加入购物车和显示购物车列表

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f680;1.加入购物车-数…

嵌入式项目:STM32刷卡指纹智能门禁系统

本文详细介绍基于STM32的刷卡指纹智能门禁系统。 获取资料/指导答疑/技术交流/选题/帮助&#xff0c;请点链接&#xff1a; https://gitee.com/zengzhaorong/share_contact/blob/master/stm32.txt 1 系统功能 1.1 功能概述 本系统由STM32硬件端&#xff08;下位机&#xff09;…

短剧小程序系统源码

短剧小程序系统源码 今天我要向大家介绍的是最新作品——短剧小程序系统源码。这不仅仅是一款简单的播放工具&#xff0c;它背后蕴含的强大功能能够帮助你的短剧业务实现质的飞跃&#xff01; 为什么说这款源码很厉害&#xff1f; 首先&#xff0c;在当今竞争激烈的市场环境…

Ubuntu中 json 打包数据的使用

1.JSON的概念和作用 为了避免不同平台下的字节对齐、类型大小不统一的问题&#xff0c;json库把数据封装成具有一定格式的字符流数据&#xff0c;进行传输。json格式&#xff1a;把数据与键值一一对应&#xff0c;数据传输双方约定好同一键值&#xff0c;使用接口API根据键值操…

网页制作08-html,css,javascript初认识のhtml使用框架结构,请先建立站点!

框架一般由框架集和框架组成。 框架集就像一个大的容器&#xff0c;包括所有的框架&#xff0c;是框架的集合。 框架是框架集中一个独立的区域用于显示一个独立的网页文档。 框架集是文件html&#xff0c;它定义一组框架的布局和属性&#xff0c;包括框架的数目&#xff0c;框架…

应无所住而生其心:心灵的自在与解脱

在快节奏、高压力的现代社会中&#xff0c;人们常常感到心灵被各种琐事和追求所束缚。如何找到内心的平静与自由&#xff0c;成为了许多人寻求的答案。“应无所住而生其心”这一出自《金刚经》的理念&#xff0c;为我们提供了一条通往心灵解放的道路。 一、核心含义 “应无所…

edge浏览器将书签栏顶部显示

追求效果&#xff0c;感觉有点丑&#xff0c;但总归方便多了 操作路径&#xff1a;设置-外观-显示收藏夹栏-始终

【K8s】专题十六(2):Kubernetes 包管理工具之 Helm 使用

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…

【uni-app】对齐胶囊容器组件

代码碎片 <template><div><view :style"{ height: ${statusBarHeight}px }"></view><viewclass"":style"{height: ${menuButtonHeight menuButtonPadding * 2}px,width: ${menuButtonInfo.left}px,}"><slot …

C语言基本知识------指针(4)

1. 回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#xff0c;被调⽤的函数就是回调函数。 void qsort(void base,//指针…

Mysql的数值类型

文章目录 数值类型字符串类型日期类型 数值类型 字符串类型 日期类型

C/C++后端开发面经

字节跳动 客户端开发 实习 一面(50min) 自我介绍是否愿意转语言,是否只愿意搞后端选一个项目来详细谈谈HTTP和HTTPS有什么区别?谈一下HTTPS加密的具体过程&#xff1a; 非对称加密 对称加密 证书认证的方式 非对称加密是为了保证对称密钥的安全性。 对称…

图神经网络实战(24)——基于LightGCN构建推荐系统

图神经网络实战&#xff08;24&#xff09;——基于LightGCN构建推荐系统 0. 前言1. Book-Crossing 数据集介绍2. Book-Crossing 数据集预处理3. 构建 LightGCN 架构3.1 LightGCN 架构2. 实现 LightGCN3.3 损失函数3.4 模型训练与测试3.5 生成推荐 小结系列链接 0. 前言 推荐系…

NTS库学习,找bug中......

引用库&#xff1a; 代码如下&#xff1a; using GeoAPI.Geometries; using NetTopologySuite.Features; using NetTopologySuite.Geometries; using NetTopologySuite; using NetTopologySuite.IO; using Coordinate NetTopologySuite.Geometries.Coordinate; using GeoAPI…

图像处理案例06 OCR应用

OCR应用 1 OCR读取账单1.1 背景及思路1.2 代码 1 OCR读取账单 1.1 背景及思路 思路 目标是读取图片中账单的信息。首先要截取图片上的账单&#xff0c;考虑到账单并非都是整齐摆放&#xff0c;为了保持算法的通用性&#xff0c;通过透视变换对扣取的账单摆正&#xff0c;然后调…

TVS管学习记录

文章目录 前言一、TVS是什么&#xff1f;二、TVS关键参数1.反向截至电压**实际意义** 2.钳位电压**定义与作用****选择依据** **4. 实际应用示例****场景&#xff1a;通信端口的ESD保护** 3.反向截至电压和钳位电压的关联和区别**. 小结** 三、实际应用电路举例总结 前言 TVS管…

java编译和c语言编译区别

java import和c include区别 AI回答 Java中的import关键字和C语言中的#include预处理指令在功能和用途上有显著的区别。以下是它们之间的一些主要差异&#xff1a; ‌作用机制‌&#xff1a; ‌Java import‌&#xff1a;import关键字用于从其他包或类中导入类型&#xff08;如…