BinaryTree(HDU-5573)【思维/构造】
题目链接:https://vjudge.net/problem/HDU-5573
题意:一棵二叉树,编号代表对应节点的取值,可以走k步,每次走的层数递增,问能够达到N的方案。
思路:首先看一下数据范围,N≤2^K≤2^60,
因此,由这颗二叉树从左往右数第一二支即可得到N的最大值。
当答案的路径在最左侧一支时,设sum=2^k-1,t为要减去的那部分数字的和,则N=sum-2*t,t能取到0-sum/2之间所有的值,则此时也可以得到所有的奇数N,
同理,当答案的路径在左数第二支时,设sum=2^k,t同上,则N=sum-2*t,t能取到0-sum/2之间所有的值,则此时可以得到所有的偶数N。
此时,设s=sum-N,若s%2==0,则可以直接求取路径,若s为奇数,则sum++后求取。
代码如下:
#include<cstdio>
using namespace std;
int main(){
int t,n,k;
long long ha,tp=;
scanf("%d",&t);
for(int i=;i<=t;i++){
scanf("%d%d",&n,&k);
printf("Case #%d:\n",i);
ha=;
ha<<=k;
ha-=;
ha-=n;
if(ha%==){
ha/=;
for(int i=;i<k;i++){
if(ha&(<<i)){
printf("%I64d -\n",(tp<<i));
}
else printf("%I64d +\n",(tp<<i));
}
}
else {
ha++;
if(!(ha&(<<(k-)))){
ha/=;
for(int i=;i<k-;i++){
if(ha&(<<i)){
printf("%I64d -\n",(tp<<i));
}
else printf("%I64d +\n",(tp<<i));
}
printf("%d +\n",(<<(k-))+);
}
else {
long long ha2=ha-;
ha2/=;
for(int i=;i<(k-);i++)
if(ha2&(<<i))
printf("%I64d +\n",(tp<<i));
else printf("%I64d +\n",(tp<<i));
printf("%I64d -\n",(tp<<(k-))+);
}
}
}
return ;
}
BinaryTree(HDU-5573)【思维/构造】的更多相关文章
- Binary Tree HDU - 5573 (思维)
题目链接: B - Binary Tree HDU - 5573 题目大意: 给定一颗二叉树,根结点权值为1,左孩子权值是父节点的两倍,右孩子是两倍+1: 给定 n 和 k,让你找一条从根结点走到第 ...
- hdu4671 思维构造
pid=4671">http://acm.hdu.edu.cn/showproblem.php? pid=4671 Problem Description Makomuno has N ...
- HDU 2588 思维 容斥
求满足$1<=X<=N ,(X,N)>=M$的个数,其中$N, M (2<=N<=1000000000, 1<=M<=N)$. 首先,假定$(x, n)=m$ ...
- HDU 1431 思维 基础数论
找范围内回文素数,最大到1e8,我就是要枚举回文串,再判素数,然后因为这种弱智思路死磕了很久题目. /** @Date : 2017-09-08 15:24:43 * @FileName: HDU 1 ...
- 思维/构造 HDOJ 5353 Average
题目传送门 /* 思维/构造:赛后补的,当时觉得3题可以交差了,没想到这题也是可以做的.一看到这题就想到了UVA_11300(求最小交换数) 这题是简化版,只要判断行不行和行的方案就可以了,做法是枚举 ...
- HDU 5573 Binary Tree 构造
Binary Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 Description The Old Frog King lives ...
- HDU 5573 Binary Tree【构造】
几天前模拟区域赛的一道题,今天发现在草稿箱里直接补个博客. 感觉这还是一道很有意思的构造题. 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 ...
- HDU 5573 Binary Tree(构造题)
http://acm.hdu.edu.cn/showproblem.php?pid=5573 题意:给出一个满二叉树,根节点权值为1,左儿子为2*val,右儿子为2*val+1.现在有只青蛙从根节点出 ...
- hdu 5535 Cake 构造+记忆化搜索
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5355 题意:给定n与m,其中1<= n <= 1e5,2 <= m <= 10;问 ...
随机推荐
- codeforces425C
http://codeforces.com/contest/425/problem/C 题意:两数列a[],b[],进行若干轮操作,每次操作花费e, 将a的一个前缀和b的一个前缀(两前缀的最后一个数字 ...
- Linux make menuconfig打开失败
OS:Ubuntu 16.04 LTS 使用“make menuconfig”配置kernel时,提示make menuconfig打开失败 $ make menuconfig *** Unable ...
- linux删除目录下指定后缀的文件
这几天在Colab上使用ImageAI训练模型时每次都会保存精确度有所提升的模型,这些模型可以算是中间产物,不太重要.为了避免混淆,运行完通过以下命令删除. find . -name "*. ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_05-方法授权-方法授权测试
这是我们课程的服务里面 加了授权的方法 重启课程管理的服务 首先需要登陆 在redis复制token 访问课程列表 用最新复制的令牌 最新token可以 调用teachplan方法 调用 一个没加注解 ...
- request请求模拟导出文件
ui界面: 实现代码: def export(self,host): '''导出课时券记录''' #测试接口 url='https://'+host+r'/ticket-record/export?t ...
- poi导出excel2007版本
/** * 导出excel2007版本 * * @param titles * 表头集合 * @param sheetNames * sheet名称 * @param datas * 数据集合 * @ ...
- CentOS7下搭建zabbix监控(五)——Web端配置自动发现并注册
好像有点问题,没法自动添加主机,我后期再测测 (1).自动发现主机并注册 1)创建发现规则 2)编辑自动发现规则信息(这两步不配置问题也不大,因为在动作中也有主机IP地址) 3)添加自动发现的动作 4 ...
- activity 工作流
https://blog.csdn.net/cs_hnu_scw/article/details/79059965 https://blog.csdn.net/xnf1991/article/deta ...
- MySQL5.7查看数据存储位置
在MySQL客户端执行如下命令查看MySQL的数据存放位置: mysql> show global variables like "%datadir%"; +-------- ...
- 第二十二章 集成验证码——《跟我学Shiro》
目录贴:跟我学Shiro目录贴 在做用户登录功能时,很多时候都需要验证码支持,验证码的目的是为了防止机器人模拟真实用户登录而恶意访问,如暴力破解用户密码/恶意评论等.目前也有一些验证码比较简单,通过一 ...