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 ...
随机推荐
- 【iOS】Swift GCD-下
欢迎来到本GCD教程的第二同时也是最终部分! 在第一部分中,你学到了并发,线程以及GCD的工作原理.通过使用dispatch_barrrier和dispatch_sync,你做到了让PhotoMana ...
- centos7.4下离线安装CDH5.7
(一)安装前的规划 (1)操作系统版本:centos7.4(64bit) [root@hadoop22 etc]# more /etc/centos-release CentOS Linux rele ...
- Python内置函数(35)——next
英文文档: next(iterator[, default]) Retrieve the next item from the iterator by calling its __next__() m ...
- Python内置函数(30)——super
英文文档: super([type[, object-or-type]]) Return a proxy object that delegates method calls to a parent ...
- 一种dubbo逻辑路由方案
背景介绍 现在很多的公司都在用dubbo.springcloud做为服务化/微服务的开发框架,服务化之后应用越来越多,链路越来越长,服务环境的治理变的很困难.比如:研发团队的人很多的,同时有几个分支在 ...
- python中的赋值与深浅拷贝
Python当中对于拷贝,分为两种类型.一种是数字和字符串,另一种就是列表.元组.字典等其他类型了. 一.数字和字符串的拷贝 1.赋值 举个栗子: a1 = 123123 a2 = 123123 # ...
- 初次面对c++
第一次实验 2-4源码: #include<iostream> using namespace std; int main() { int day; cin>>day; swi ...
- SourceTree 03 - 跳过账号登录直接进入主界面
SourceTree系列第1篇 SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/geaosu/p/8807666.html) SourceTree系列 ...
- phpstorm 快捷键高效助手扩展 常用快捷键收集整理 2018-04-12 16:42:10
声明: 本文属于原创,未经博主许可,禁止任何形式转载! phpstorm 快捷键整理收集 以及高效复用代码快捷键扩展 常规快捷键大全请结合参考2篇博客: https://blog.csdn.net/y ...
- oracle12c:通过oracle客户端工具配置tns,并使用sqlldr进行批量导入数据
通过oracle客户端工具配置tns: 进入oracle配置工具“Net Configuration Assistant”-> 点击“下一步”,完成tns配置. 测试是否tns可用 命令:tns ...