hdu 5573Binary Tree
Binary Tree
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 251 Accepted Submission(s): 143
Special Judge
Since the king is professional in math, he sets a number to each node. Specifically, the root of the tree, where the King lives, is 1.
Say froot=1.
And for each node u,
labels as fu,
the left child is fu×2 and
right child is fu×2+1.
The king looks at his tree kingdom, and feels satisfied.
Time flies, and the frog king gets sick. According to the old dark magic, there is a way for the king to live for another N years,
only if he could collect exactly N soul
gems.
Initially the king has zero soul gems, and he is now at the root. He will walk down, choosing left or right child to continue. Each time at node x,
the number at the node is fx (remember froot=1),
he can choose to increase his number of soul gem by fx,
or decrease it by fx.
He will walk from the root, visit exactly K nodes
(including the root), and do the increasement or decreasement as told. If at last the number is N,
then he will succeed.
Noting as the soul gem is some kind of magic, the number of soul gems the king has could be negative.
Given N, K,
help the King find a way to collect exactly N soul
gems by visiting exactly K nodes.
which indicates the number of test cases.
Every test case contains two integers N and K,
which indicates soul gems the frog king want to collect and number of nodes he can visit.
⋅ 1≤T≤100.
⋅ 1≤N≤109.
⋅ N≤2K≤260.
the case number and counts from 1.
Then K lines
follows, each line is formated as 'a b', where a is
node label of the node the frog visited, and b is
either '+' or '-' which means he increases / decreases his number by a.
It's guaranteed that there are at least one solution and if there are more than one solutions, you can output any of them.
5 3
10 4
1 +
3 -
7 +
Case #2:
1 +
3 +
6 -
12 +
题意:
给你一个n和k,要求用k层的完全二叉树,从根节点走到叶子节点,然后用走过的这k个数的加减组成n,多组解
输出一个结果即可
/*
开始实在是没想到什么方法,于是搜了一发GG.
后来看题解才发现N≤2K≤2^60这个条件很重要- -
我们只需要考虑二叉树最左边那条边,1 2 4 8 16 ......(好机智)
于是愉快地的开始写了
根据奇偶的不同再看是取最底端的左孩子或右孩子
对于左边所有节点求和t,dis = t-n能求出我们比预计多了多少
然后只要不加上dis/2即可
而且我们发现最左边 2^0,2^1,2^2.... ,所有把dis转换成2进制,有1的地方取‘-’即可
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std; int vis[10005];
int n,k;
int main()
{
int T;
int cas =1;
scanf("%d",&T);
while(T--)
{
printf("Case #%d:\n",cas++);
scanf("%d%d",&n,&k);
int t;
if(n % 2 == 0)
t = 1<<k ;
else
t = (1<<k) -1;
int dis = (t - n)/2;
memset(vis,0,sizeof(vis));
for(int i = k; i >= 0; i--)
{
if(1 & (dis >> i))
vis[i+1] = 1;
}
int cur = 1;
for(int i = 1; i < k; i++)
{
if(vis[i])
printf("%d %c\n",cur,'-');
else
printf("%d %c\n",cur,'+');
cur *= 2;
}
printf("%d %c\n",n%2 ? 1<<(k-1):(1<<(k-1))+1,vis[k] ? '-':'+');
}
return 0;
}
hdu 5573Binary Tree的更多相关文章
- hdu 5909 Tree Cutting [树形DP fwt]
hdu 5909 Tree Cutting 题意:一颗无根树,每个点有权值,连通子树的权值为异或和,求异或和为[0,m)的方案数 \(f[i][j]\)表示子树i中经过i的连通子树异或和为j的方案数 ...
- HDU 5044 Tree(树链剖分)
HDU 5044 Tree field=problem&key=2014+ACM%2FICPC+Asia+Regional+Shanghai+Online&source=1&s ...
- [HDU 5293]Tree chain problem(树形dp+树链剖分)
[HDU 5293]Tree chain problem(树形dp+树链剖分) 题面 在一棵树中,给出若干条链和链的权值,求选取不相交的链使得权值和最大. 分析 考虑树形dp,dp[x]表示以x为子树 ...
- HDU 4757 Tree(可持久化Trie+Tarjan离线LCA)
Tree Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) Total Su ...
- HDU 4757 Tree 可持久化字典树
Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4757 Des ...
- HDU 6228 - Tree - [DFS]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6228 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- HDU 5909 Tree Cutting 动态规划 快速沃尔什变换
Tree Cutting 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5909 Description Byteasar has a tree T ...
- 2015 Multi-University Training Contest 8 hdu 5390 tree
tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ...
- HDU 4757 Tree
传送门 Tree Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) Prob ...
随机推荐
- 在arc模式下 CGImage 释放问题
//大图bigImage //定义myImageRect,截图的区域 if (imagecount >= 3) { CGRect myImageRect; if (i.size.width< ...
- C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现
我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...
- Tomcat性能优化及JVM内存工作原理
Java性能优化原则:代码运算性能.内存回收.应用配置(影响Java程序主要原因是垃圾回收,下面会重点介绍这方面) 代码层优化:避免过多循环嵌套.调用和复杂逻辑. Tomcat调优主要内容如下: 1. ...
- 页面加载loading动画
关于页面加载的loading动画,能度娘到的大部分都是通过定时器+蒙层实现的,虽然表面上实现了动画效果,实际上动化进程和页面加载进程是没有什么关系的,只是设置几秒钟之后关闭蒙层,但假如页面须要加载的元 ...
- Python的下载及安装
1.官网下载地址:https://www.python.org/downloads/ 2.python设置环境变量: 在系统变量里添加Python的安装位置 3.在cmd里输入python里即可
- Spring Boot面试题
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别 ...
- Debian8搭建LEMP环境
LEMP环境指的是Linux+Nginx+MariaDB+PHP 这里我选择的版本是最新的MariaDB和PHP7 安装Nginx 相对于Apache,Nginx是一个轻量级的高性能web服务器并在近 ...
- Struts(十八):通过CURD来学习PrepareInterceptor拦截器
PrepareInterceptor拦截器的用法: 1.若Action实现了Preparable接口,则Action方法需实现prepare()方法: 2.PrepareInterceptor拦截器S ...
- 【面试题】由HashMap引发的一系列追问
HashMap和HashTable的区别 同:HashMap和Hashtable都实现了Map接口. 异:HashMap允许null的键值对,非同步的,非线程安全的,效率高: HashTable不允许 ...
- 三层架构和MVC一样吗?(区别)
首先声明:1.三层架构绝不是MVC(不一样滴) 2.三层架构可以应用于任何语言.任何技术的应用程序. 3.而MVC只是为了解决BS应用程序视图各部分的耦合关系:他们 ...