【洛谷2320】【HNOI2006】鬼谷子的钱袋(加强版)

信息学奥赛c++ 口袋 正解 题目描述克拉拉同学平时就喜欢一些奇奇怪怪的东西,她有一个神奇的口袋,她能从口袋里拿出各种神奇的东西。某一天她发现口袋里出现了一些像数字形状的物品, 我们用0 到9 这十种数字来表示不同的物品。克拉拉有一个非常喜欢的数字x, 现在她想用口袋里的给出的这些数字形状的物品来组成尽可能多的x,每个物品只能用一次。组装过程中克拉拉发现这些像数字形状的物品中,“2” 和“5”倒过来特别像,“6” 和“9” 倒过来也特别像,所以她可以用2 和5 互相代替,也能用6 和9互相代替(其他的不能代替)。 阅读详情

题目背景

鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。但是,他的行程安排得很满,他已经买好了去邯郸的长途马车票,不巧的是出发时间是在拍卖会快要结束的时候。于是,他决定事先做好准备,将自己的金币数好并用一个个的小钱袋装好,以便在他现有金币的支付能力下,任何数目的金币他都能用这些封闭好的小钱的组合来付账。

题目描述

鬼谷子也是一个非常节俭的人,他想方设法使自己在满足上述要求的前提下,所用的钱袋数最少,并且没有任何两个钱袋装有相等的大于1的金币数。假设他有m个金币,你能猜到他会用多少个钱袋,并且每个钱袋装多少个金币吗?

输入输出格式

输入格式:

包含一个整数,表示鬼谷子现有的总的金币数目m。其中,m在long long范围内。

输出格式:

两行,第一行一个整数h,表示所用钱袋个数,第二行表示每个钱袋所装的金币个数,由小到大输出,空格隔开。

题解

首先要把题目读懂,即可以用n个1,1个2~m的数,通过加法组合成1~m的所有整数,当然,这所有的数字加起来要等于m,似乎有点复杂,该怎么处理呢?显然,不好直接处理本题,那么先假设一下m=10,如果想要组成1~m的所有整数,那么1是必须要的,因为如果不要1就不能组成1了,然后想,如果有一部分数通过加上一个数等于另外一部分数该多好!那么可以想到把10个数分成1~5和6~10,那么显然,1~5的数字加上5就能够组成6~10,所以取5,然后可以发现这就是不断地求子问题,那么递归,但是5是奇数怎么办?因为c++中的除法向下取整,所以分成1~2,3~5,1~2必须加上3才能组成3~5,那么把3取上,3又分成1和2,3显然1必须加上2才能取2,3,那么取2,因为1是必须取的,所以取1.透过现象看本质,可以发现求解的过程很像倍增,每一次可以取的数目都*2,那么如果2^n > m,那么n即为所求的袋子数,如何求每个袋子装的金币呢?根据之前模拟的过程记录答案即可.通过这道题要明白,一些用字母表示的数不好直接处理,可以设特殊值,从现象看本质,最后想到求解的方法!代码可以缩成1个循环!

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long ans[100];
int main(){
	long long n,cnt=0;
	scanf("%lld",&n);
	while(n){
		ans[++cnt]=(n+1)/2;
		n/=2;
	}
	printf("%d\n",cnt);
	for(int i=cnt;i>=1;i--)
	printf("%lld ",ans[i]);

	return 0;
}

P2320 [HNOI2006] 鬼谷子的钱袋 💖大家好,我是2022年3月份新人榜排名第三的🍁❄️鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。但是,他的行程安排得很满,他已经买好了去邯郸的长途马车票,不巧的是出发时间是在拍卖会快要结束的时候。... 阅读详情

相关推荐

【倍增 进制】# P2320 [HNOI2006] 鬼谷子的钱袋|普及+

鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯的特派员前来向他咨询时政。 有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。 但是,他的行程安排得很满,他已经买好了去邯郸的长途马车票,不巧的是出发时间是在拍卖会快要结束的时候。于是,他决定事先做好准备,将自己的金币数好并用一个个的小钱袋装好,以便在他现有金币的支付能力下,任何数目的金币他都能用这些封闭好的小钱的组合来付账。 鬼谷子也是一个非常节俭的人,他想方设

闻缺陷则喜何志丹 780

【BZOJ1192】鬼谷子的钱袋——二分思想

先看题目 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。但是,他的行程安排得很满,他他已经买好了去邯郸的长途马车标,不巧的是出发时间是在拍卖会快要结束的时候。于是,他决定事先做好准备,将自己的金币数好并用一个个的小钱袋装好,以...

YIERsRP的博客 353

RANSAC地面点分割:从原理到C++实战优化

本文深入解析RANSAC算法在点云地面分割中的原理与C++实战优化,涵盖动态迭代次数、自适应阈值等关键技巧,通过并行计算和内存访问优化提升性能,适用于激光雷达点云处理。

weixin_29015051的博客 277

【BZOJ - 1192】鬼谷子的钱袋(思维)

鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。但是,他的行程安排得很满,他他已经买好了去邯郸的长途马车标,不巧的是出发时间是在拍卖会快要结束的时候。于是,他决定事先做好准备,将自己的金币数好并用一个个的小钱袋装好,以便在他现有金...

__似水流年__的博客 460

Viobot使用教程总贴

使用教程总贴

weixin_66666206的博客 1409

避坑指南:Python模拟抖音扫码登录时,那些你可能会遇到的‘Referer’和‘Token’校验问题

本文深入解析Python模拟抖音扫码登录时常见的Referer校验与Token失效问题,提供五大陷阱的解决方案。从动态fp参数生成到Referer校验策略,再到Token生命周期管理,手把手教你破解抖音登录接口的反爬机制,助力开发者高效完成自动化登录。

weixin_42573113的博客 783

BZOJ 1192 [HNOI2006] 鬼谷子的钱袋 题解

1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1068  Solved: 778 [Submit][Status] Description 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)

初学者 1626

A Mathematical Framework for Transformer Circuits—(二)

transformer数学理论框架

qq_42208244的博客 758

P2320 [HNOI2006]鬼谷子的钱袋

进制

Ajwallet 421

c# 开发串口调试助手 Visual Studio 2019

串口调试助手是用于在开发、测试和调试串口通信应用程序时进行串口数据的监视和交互的工具。

2301_76792852的博客 8060

北航机器学习期末考试试题2020年春

北航机器学习期末考试试题2020春 看csdn上试题收费,积分还挺高,本着共享的理念,把2020春季ML考试的试题公开,若侵权,立删 前8道题10分,第9题20分 决策树采用ID3算法 对宇宙星球是否适合生存分类 SVM的原理;软间隔、硬间隔;以及对非线性样本点分类 集成学习的原理,以及及串行boosting以及bagging的简单概括 K-means与混合高斯模型的异同以及EM算法的原理,如何计算 马尔可夫随机场最大团;马尔可夫随机场的联合概率分布(势函数表示),贝叶斯网络联合概率分布 PCA主成分基于

qq_43343919的博客 5418

洛谷训练赛(P1111 修复公路,P2320 [HNOI2006]鬼谷子的钱袋)

总在不经意的年生,回首彼岸,纵然发现光景绵长。 题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。 题目描述 给出A地区的村庄数NN,和公路数MM,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路)...

0k-ok 364

Kylin操作系统下OpenLDAP安装

Kylin操作系统下OpenLDAP安装

跟着大数据和AI去旅行 1612

洛谷 P2320 [HNOI2006]鬼谷子的钱袋

23333题目:题意:分析:代码: 题目: 传送门 题意: 现在有nnn个金币,问我们怎么将它分成最少的袋子使得这些袋子内的金币可以组成任意的数 并且每个袋子内的金子数不能相同 分析: 我们可以用到分治的思想,我们将一个数可以分为1—n21—\frac{n}{2}1—2n​和n2+1—n\frac{n}{2}+1—n2n​+1—n 这样就不难看出,后者的所有数都等于前者加上n2\frac{n...

qq_35786326的博客 172

8.19华为OD机试真题 新系统 - 基站低能耗时段统计 (Java/Py/C/C++/Js/Go)

8.19华为OD机试真题 新系统 - 基站低能耗时段统计 (Java/Py/C/C++/Js/Go)

算法大师! 1153

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

P2320 [HNOI2006]鬼谷子的钱袋(想法)

原题: https://www.luogu.org/problem/P2320 题意: 给出一个m,你讲起拆分成最少份,使得可以组成1到m之间的任意数,大于1数只能有一份。 解析: 以39为例,按照二进制分可以分成1,2,4,8,8,161,2,4,8,8,161,2,4,8,8,16,但是不能出现两个8,怎么改呢? 我们把两个8变成777和999,也就是1,2,4,7,9,161,2,4,7,9...

QAQ 421

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

洛谷 P2320 [HNOI2006]鬼谷子的钱袋 思维+二进制

https://www.luogu.org/problem/P2320 题目描述 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。 有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。 但是,他的行程安排得很满,他已经买好了去邯郸的长途马车票,不巧的是出发时间是在拍卖会快要结束的时...

xiji333的博客 205

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

洛谷--P2320 [HNOI2006]鬼谷子的钱袋

总感觉做过很多这样的题,把一个数至少分成多少个数能够使这些数组成小于该数的任意整数,把这个数转化为二进制,看有几位二进制就需要分成几个数,所以看到这个题的时候自然就想到了这个做法。 这个题大概意思也是这样,给一个整数,至少分成几个数,可以使这些数组成小于该数的任意整数,但是可能是我眼睛瞎了,没看到题目中还有一个要求,并且不有两个钱袋装有相同的大于1的金币数,就是相同的只能是1,不能有两个大于1的数...

Tom~~~ 231

洛谷P2320 [HNOI2006]鬼谷子的钱袋

https://www.luogu.org/problem/show?pid=2320#sub 题目描述全是图 数学思维,分治思想 假设总数为n 从n/2+1到n的数都可以用1~n的数+n/2表示出来 1~n/2的数也可以这样拆分成两份。 一路拆下去即可。 例如n=12时: {1 2 3 4 5 6}+6={7,8,9,10,11,12} {1,2,3}+3={4...

dezhen7015的博客 159

【HNOI2006】鬼谷子的钱袋

本题在洛谷上的链接:https://www.luogu.org/problemnew/solution/P2320 做法和二进制划分很像,,,原来我的二进制划分一直有点问题(之前我是枚举2的n次方然后减,逃)。。。 我们举20这个例子,假如我们要表示20以内的数,那么一定要取10,然后再表示出1到10之内的数,加上10也就表示出了11到20之内的数。同理,不断往下推,我们发现将m不断...

weixin_30408309的博客 131

[HNOI 2006] 鬼谷子的钱袋

BZOJ 1192 Luogu2320 运用了“分治”的思想,先选择\(n/2\),然后将问题转化为\([1,n/2]\)范围内的子问题,以此类推 一开始以为是将 n 的二进制表示中所有是 1 的拿出来,比如这样: #include <cstdio> #include <iostream> using namespace std; int main(){ int n...

weixin_30952103的博客 109
上一篇: 【BZOJ4247】挂饰
下一篇: 【POJ1275】Cashier Employment
dcx2001
博客等级 码龄9年 23粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值