【2015年奉化市】下落的小球(five.pas/c/cpp)

2020CSP第二轮 优秀的拆分(power) 题目描述 一般来说,一个正整数可以拆分成若干个正整数的和。例如,1 = 1,10 =1 + 2 + 3 + 4 等。对于正整数 ???? 的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,???? 被分解为了若干个不同的 2 的正整数次幂。注意,一个数 ???? 能被表示成 2 的正整数次幂,当且仅当 ???? 能通过正整数个 2 相乘在一起得到。例如,10 = 8 + 2 = 2^3 + 2^1 是一个优秀的拆分。但是,7 = 4 + 2 + 1 =2^2 + 2^1 + 2^0 就不是一个优秀 阅读详情

(File IO): input:five.in output:five.out

时间限制: 1000 ms 空间限制: 262144 KB 具体限制

题目描述

有一棵满二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从上到下从左到右编号为1,2,3,…,2^D-1。在结点1处放一个小球,它会往下落。每个内结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点上的开关关闭,则往左走,否者往右走,直到走到叶子结点。
一些小球从结点1处依次开始下落,最后一个小球将会落到哪里呢?

输入

输入文件five.in
只有一行共有二个正整数:d k   (其中d为叶子深度,k为小球个数,1 <= k <= 2^(d-1) )

输出

输出文件five.out
只有一行且只有一个正整数:第k个小球最后所在的叶子编号

样例输入

16 12345

样例输出

36358

数据范围限制

50% 的数据: 1 <= d <= 40  
80% 的数据: 1 <= d <= 60  
100% 的数据: 1 <= d <= 100 

提示(二叉树知识拓展)

思路: 这道题其实也不算难,只是高精度乘除分。
首先,我们了解一下上面那个链接,然后再推一下满二叉树的特性:

1)叶子只能出现在最下一层。出现在其它层就不可能达成平衡。

2)非叶子结点的度一定是2,即他们的下一层都有两个结点。

3)在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。

4)对于除却根结点的任意结点,父亲结点都为i/2,左子树为2i,右子树为2i+1。(重点)

对于每一个球,我们都能推出他应该向左还是向右,所以利用4),我们就能得到其最后球最后在哪个结点。

代码:

#include<bits/stdc++.h>
using namespace std;
long long d,k[10005],a[10005],js=1;
char f;
int main(){
	freopen("five.in","r",stdin);
	freopen("five.out","w",stdout);
	scanf("%d",&d);
	cin>>f;
	while(f>='0'&&f<='9'){
		k[0]+=1;
		k[k[0]]=f-'0';
		f=getchar();
	}
	a[0]=1;
	a[1]=1;
	for(int i=1;i<d;i++){
		for(int j=1;j<=a[0];j++){
			a[j]*=2;
		}
		for(int j=1;j<=a[0]+1;j++){
			a[j+1]+=a[j]/10;
			a[j]=a[j]%10;
		}
		if(k[k[0]]%2==0){
			a[1]++;
			for(int j=1;j<=a[0];j++){
				a[j+1]+=a[j]/10;
				a[j]=a[j]%10;
			}
		}
		if(a[a[0]+1]!=0){
			a[0]++;
		}
		int bj=0;
		if(k[k[0]]%2==1) k[k[0]]+=1;
		for(int j=js;j<=k[0];j++){
			k[j+1]+=k[j]%2*10;
			if(k[j]/2!=0||bj==1){
				k[j]=k[j]/2;
				bj=1;
			}
			else if(bj==0) js++;;
		}
	}
	for(int i=a[0];i>=1;i--){
		printf("%d",a[i]);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

写博不易,请发现问题的大佬提出。

代码保证正确,请留赞再走。

【2018年南海区甲组】拆除桥墩(remove) 题目描述 河的左岸到右岸之间有一座年久失修、已经废弃的大桥,有 N 个桥墩,影响船只通行。现在要拆除部分桥墩,使得通航能力最大,通航能力由最窄的地方决定的,这个地方有可能是岸与桥墩之间,也可以是桥墩之间。工程预算有限,只能拆除 M 个桥墩。如何安排工程,才能使得通航能力尽可能的大。 输入 第一行包含三个整数 L,N,M,分别表示左岸到右岸的距离、桥墩数和需要拆除的桥墩数。 接下来 N 行,每行一... 阅读详情

相关推荐

5个4000比特大状态置换算法的设计与分析

下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。

HuangJinLong2的博客 340

1363:小球(drop)

【题目描述】 许多的小球一个一个的从一棵满二叉树上掉下来组成FBT(Full Binary Tree,满二叉树),每一时间,一个正在下降的球第一个访问的是非叶子节点。然后继续下降时,或者走右子树,或者走左子树,直到访问到叶子节点。决定球运动方向的是每个节点的布尔值。最初,所有的节点都是false,当访问到一个节点时,如果这个节点是false,则这个球把它变成true,然后从左子树走...

C_Dreamy的博客 1400

C/C++:小球下落问题求解.rar(含完整注释)

给定一棵深度为 depth 的满二叉树,并对该二叉树从根结点开始自上而下,每一层从左到右, 从 1 开始进行编号,则结点的编号序列就是 1,2,3,…,2depth-1。如下图给出的深度为 4 的满二叉树。 现在在结点 1 处放一个小球,它会往下落。二叉树中每个结点处都有一个开关,初始时全部关 闭,每当有小球落到一个结点时,该结点上的开关的状态就会改变。当一个小球落到某个结点时, 如果该结点上的开关的状态是打开的,则往左走,否则,往右走,直到走到叶子结点。 现在有 number 个小球依次从结点 1 处开始下落,那么最后一个小球将会落到哪里呢? 输入满二叉树的深度 depth(depth<=10)和小球个数 number,输出第 number 个小球最后所在 的叶子结点的编号。 例如: 若输入 4 2,则输出 12 若输入 3 4,则输出 7 若输入 10 1,则输出 512 若输入 2 2,则输出 3 若输入 8 128,则输出 255

【USACO 2020 US Open Bronze】Cowntact Tracing 题解

题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们(编号为 1…N)的健康。最近,Farmer John 对他的所有奶牛进行了检测,发现有一部分奶牛对该疾病的检测结果呈阳性。利用牛棚内的视频监控,他得以查看最近的奶牛之间的互动行为,结果发现奶牛们互相打招呼时,她们会握蹄,不幸的是这是一种会将疾病从一头奶牛传播给另一头奶牛的行为。Farmer J...

zhy_Learn的博客 2866

R语言笔记三:矩阵、数组、列表和数据框

1.矩阵        矩阵是二维的,需要有行和列。向量是一维的。        在R软件中,矩阵是有维数的向量,这里的矩阵元素可以是数值型、字符型或者逻辑型,但是每个元素必须拥有相同的模式,这个和向量一致。 (1)创建矩阵: m <- matrix(1:20,4,5) 行数和列数的分配必须满足分配条件。若分配的行列过大,分配的元素不足够,则报错。 m <-

weixin_44384631的博客 6210

PyMiMi实战指南:midas_api配置与连接测试详解

本文详细介绍了PyMiMi库中midas_api的配置与连接测试全流程。从环境准备、API密钥获取,到核心的url_cfg配置函数使用,再到通过test_url进行连接验证,提供了清晰的步骤和代码示例。文章重点解析了配置原理、常见错误排查方法(如401错误、连接超时),并强调了API密钥的安全性管理,帮助用户稳固建立Python与Midas Civil NX之间的自动化通信桥梁。

weixin_29044713的博客 684

【2011.10.29模拟】24点游戏题解

题目描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24,例如: ((A* K)-J) * Q等价于((1 * 13)-11) * 12=24 加减乘不用多说了,但除法必须满足能整除才能除!这样有一些是得不到24点的,所以这里只要求求出不超过24的最大值。 输入 输入第一行N(1<=N<=5)表示有N组测试数据。每组测试数据输入4行,每行一个整数(1到13

zhy_Learn的博客 2768

LS-DYNA壳单元冲击仿真中的5个关键设置:以方管碰撞为例(含沙漏控制参数)

本文以方管碰撞为例,深入解析了LS-DYNA壳单元冲击仿真中的五个关键设置。重点探讨了沙漏控制参数(如IHQ=4)的选择逻辑、自接触算法优化、能量监控方法、材料模型(MAT_24)的真实应力-应变曲线与应变率效应设置,以及单元公式的选取。这些核心设置共同决定了仿真的精度与效率,是确保方管冲击仿真结果可靠性的基石。

salt的博客 623

最长不下降子序列及输出序列

文章目录引入FirstSecondThird思路利用序列的单调性朴素时间二分优化:代码:输出序列:例题: 引入 回忆一下,以前学动态规划是的最长不下降子序列,我们是如何地推的呢??? First 2n2^n2n暴力,判断每个是否选择输出最大值。 Second 记忆化搜索,时间复杂度待定。 Third n2n^2n2动态规划,代码如下。 #include<bits/stdc++.h> using namespace std; int a[1010],n,f[1010],ans; int main(

zhy_Learn的博客 2450

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

(LDA新闻文本主题分析)基于 gensim训练LDA模型,进行新闻文本主题分析 完整代码+数据 可直接运行

机器学习深度学习业余选手 1498

2、集中式MIMO雷达研究进展:正交波形设计与信号处理

集中式多输入多输出(Multiple Input Multiple Output,MIMO)雷达通常利用正交波形增加发射波形 自由度,采用数字阵列拓展空间收发自由度,使得雷达接收机的天线孔径获得明显扩展,最终带来空间分辨率、 测角精确度、杂波抑制能力等大幅度提升。但是,这些性能提升的前提是发射波形具有正交特性。事实上,在 实际应用中,在不牺牲时域/频域资源情况下,受限于时宽带宽积,无法获得完全正交的波形集合,从而限制了 MIMO雷达系统性能。本文对集中式MIMO雷达正交波形复用的技术原理进行了系统回顾,分别

qq_43416206的博客 2771

【USACO 2020 US Open Bronze】Social Distancing 2 题解

题目描述 由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。 尽管他尽了最大努力使他的 N 头奶牛们(1≤N≤1000)践行“社交距离”,还是有许多奶牛不幸染上了疾病。编号为 1…N 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 i 位于位置 xi。Farmer John 知道存在一个半径 R,任何与一头被感染的奶牛距离不超过...

zhy_Learn的博客 2283

MATLAB 基于 Baker 映射和 Logistic 混沌序列的图像加解密实现

图像加密是信息安全领域的重要研究方向,在数字版权保护、隐私保护等领域有着广泛应用。本文将介绍基于 MATLAB 的 Baker 映射和 Logistic 混沌序列的图像加解密算法,该算法利用混沌系统的初值敏感性和伪随机性,能够有效地对图像进行加密和解密。基于 Baker 映射和 Logistic 混沌序列的图像加解密算法是一种有效的方法,可以应用于数字版权保护、隐私保护等领域。MATLAB 提供了强大的工具和函数,可以方便地实现该算法。

走向CTO的路上... 932

2020CSP第二轮 方格取数(number)

题目描述 设有 ???? × ???? 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。 输入 输入文件名为 number.in。 第 1 行两个正整数 ????, ????。 接下来 ???? 行每行 ???? 个整数,依次代表每个方格中的整数。 输出 输入文件名为 number.out。 一个整数,表示小熊能取到的整数之和的最大值。

zhy_Learn的博客 2131

【Python】秋招机考 —— 2025/8/27 华为 AI 方向

2025 华为 AI 秋招机考题目包含15道单选题、5道多选题和2道机器学习编程题,涵盖核心算法与数学知识。单选题考察了Softmax激活、Transformer位置编码、Jacobi迭代、大模型幻觉现象、特征向量、K-means聚类、矩阵秩、实对称矩阵性质、SVD分解、概率论等知识点。多选题涉及高斯-赛德尔迭代和朴素贝叶斯分类器。

一杯水果茶!足矣~ 835

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

2020CSP第二轮直播获奖(live)

题目描述 NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 ????%,即当前排名前 ????%的选手的最低成绩就是即时的分数线。更具体地,若当前已评出了 ???? 个选手的成绩,则当前计划获奖人数为max(1, ⌊???? × ????%⌋),其中 ???? 是获奖百分比,⌊????⌋ 表示对 ???? 向下取整,max(????, ????) 表示 ???? 和 ???? 中较大的数。如有选手成绩相同,则所有成绩并列的选手都能获奖,

zhy_Learn的博客 1916

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

栓奶牛——二分解法

栓奶牛——二分 题目描述: 有n头奶牛,有k个木桩,每个木桩有一个位置,一个木桩上只能拴一头奶牛。由于奶牛好斗,所以在拴奶牛的时候要求距离最近的奶牛的距离尽可能大。 例如n=4,k=6,木桩的位置为0,3,4,7,8,9(如最下面的图) 此时,有许多拴牛方案,例如 0,3,4,9 此时最近距离为1(3,4之间) 0,3,7,9 此时最近距离为2 输入 n,k,p1三个整数(0≤p1≤100),其中...

zhy_Learn的博客 1859

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【2014年鄞州区】小幸福(e.pas/c/cpp)

题目描述: 有n个小朋友,他们商量在保证作业做完的前提下去 玩。第i个小朋友的可以玩耍时间为Si~Ti。这里Si~Ti 表示的是时间段,比如Si=2,Ti=4,那么意味着这位小 朋友在时刻1不能玩,时刻2、3、4可以去玩,时刻4以 后都不能出去玩。如果在某个时刻,在一起玩的小朋 友个数不少K个,那么这一时刻就是幸福的。现在你要 求出所有幸福的时刻长度。 输入 三行 第一行:n k (n个...

zhy_Learn的博客 1832

【USACO 2020 January Silver】Berry Picking 题解

题目描述 Bessie 和她的妹妹 Elsie 正在 Farmer John 的浆果园里采浆果。Farmer John 的浆果园里有 N 棵浆果树(1≤N≤1000);树 i 上有 Bi 个浆果(1≤Bi≤1000)。Bessie 有 K 个篮子(1≤K≤1000,K 为偶数)。每个篮子里可以装同一棵树上采下的任意多个浆果,但是不能装来自于不同的树上的浆果,因为它们的口味可能不同。篮子里也可以不装...

zhy_Learn的博客 1551

【USACO 2018 December Bronze】The Bucket List题解

题目描述 Farmer John正在考虑改变他给奶牛挤奶的时候分配牛奶桶的方式。他认为这最终能使得他使用数量更少的桶,然而他不清楚具体是多少。请帮助他! Farmer John有N头奶牛(1≤N≤100),方便起见编号为1…N。第i头奶牛需要从时间si到时间ti之间挤奶,并且挤奶过程中需要用到bi个桶。于是多头奶牛可能在同一时刻都在挤奶;如果这样,她们不能使用相同的桶。也就是说,一个在第i头奶牛挤...

zhy_Learn的博客 1482

【USACO 2019 February Bronze】The Great Revegetation题解

题目描述 长时间的干旱使得Farmer John的N块草地上牧草匮乏。随着雨季即将到来,现在应当是重新种植的时候了。 在Farmer John的储物棚里有四个桶,每个桶里装着一种不同的草种。他想要在每块草地上播种其中一种草。作为一名奶农,Farmer John想要确保他的每头奶牛都能得到丰富的食谱。他的M头奶牛每一头都有两块喜爱的草地,他想要确保这两块草地种植不同种类的草,从而每头奶牛都可以有两种...

zhy_Learn的博客 1428

【USACO 2019 February Bronze】Measuring Traffic 题解

题目描述 Farmer John的农场边上的高速公路最近出现了引人注目的流量上升,或者至少Farmer John看起来是这样的。为了证实这件事,他打算用一组传感器测量公路上的车流量,每个传感器被用来测量一小段路面上的车流量的数值。 不幸的是,某一天经过牛棚的时候,Farmer John被绊倒了,装有传感器的盒子掉进了一个巨大的奶缸,之后它们就不能正常工作了。比起之前可以产生一个精确的车流量读数,现...

zhy_Learn的博客 1423

【2020.11.14NOIP普及组模拟】到达 题解

文章目录题目描述输入输出样例输入【输入样例1】【输入样例2】样例输出【输出样例1】【输出样例2】解题:题目大意:20%:50%:代码:100100100%:代码: 题目描述 有n 个在二维平面上,第i 个点的坐标是xi, yi。这里x1, x2, …, xn 和y1, y2, …, yn都是1 到n 的排列。 对于任何一个点k,我们可以走到横纵坐标都比它大的点,或者横纵坐标都比它小的点。 现在,我们想要知道当k = i 的时候,有多少个点可以走到第k 个点。 输入 输入的第一行是一个正整数n,表示平面上点的

zhy_Learn的博客 1409

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 14

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 436
上一篇: 二叉树知识拓展
下一篇: 【USACO 2020 US Open Bronze】Social Distancing 2 题解
A_F_O
博客等级 码龄7年 52粉丝 1453原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值