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;问 ...
随机推荐
- mysql IFNULL函数和COALESCE函数使用技巧
IFNULL() 函数 IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值. IFNULL() 函数 ...
- getLocation需要在app.json中声明permission字段,解决办法
具体开发方法如下: 在 app.json 里面增加 permission 属性配置(小游戏需在game.json中配置): "permission": { "scope. ...
- MangoDB在C#中的使用
http://blog.sina.com.cn/s/blog_927f3c2401011937.html 图形工具 http://api.mongodb.org/csharp/current/html ...
- GO 跟C++/C差异
规范的语法(不需要符号表来解析) 垃圾回收(独有) 无头文件 明确的依赖 无循环依赖 常量只能是数字 int和int32是两种类型 字母大小写设置可见性(letter case sets visibi ...
- jQuery 设置select,radio的值,无法自动触发绑定的change事件
一.问题 今天在对select和radio做change事件绑定后,手动设置其value值,但是不能触发change事件 二.解决 使用trigger方法手动触发
- [Java复习] 分布式高可用-Hystrix
什么是Hystrix? Hystrix 可以让我们在分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制. Hystrix 的设计原则 对依赖服务调用时出现的调用延迟和调用失败进 ...
- TweenJS----前端常用的js动画库,缓动画和复制动画的制作,效果非常好。
TweenJS类库主要用来调整和动画HTML5和Javascript属性,提供了简单并且强大的tweening接口. http://www.createjs.cc/tweenjs/ http://ww ...
- GPS nmealib学习 问题
When building on Ubuntu 12.x the build fails with the following error… gcc samples/generate/main.o ...
- Eclipse中把项目导出为war包【我】
项目右键,Export 全部默认一路下一步,选择一个目标文件夹,确定即可.
- 34 Flutter仿京东商城项目 用户注册 注册流程 POST发送验证码 倒计时功能 验证验证码
加群452892873 下载对应34课文件,运行方法,建好项目,直接替换lib目录 以下列出的是本课涉及的文件. RegisterFirst.dart import 'package:flutter/ ...