FZU 1064 教授的测试
递归构造答案。
根据当前整颗树的编号,可以计算左右子树有几个节点以及编号。因此,不断dfs下去就可以了。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; long long c[] = { , , , , , , , , , , , ,
, , , , , };
long long n; void dfs(long long num, long long p)
{
long long left=, right=, sum = ,left_p, right_p;
int level = (int)num;
for (int i = ; i <= level-; i++)
{
sum = sum + c[i] * c[level - - i];
if (sum >= p)
{
sum = sum - c[i] * c[level - - i];
p = p - sum;
left = (long long)i;
right = (long long)(level - - i);
if (c[level - - i] == ) left_p = p / c[level - - i];
else left_p = p / c[level - - i] + ;
right_p = p% c[level - - i];
if (right_p == ) right_p = c[level - - i];
break;
}
} if (left != ){printf("(");dfs(left, left_p);printf(")");}
printf("X");
if (right != ){printf("(");dfs(right, right_p);printf(")");}
} void work()
{
long long p, left, right, sum = ,left_p=, right_p=;
int level;
for (int i = ; i <= ; i++)
{
sum = sum + c[i];
if (sum >= n){ sum = sum - c[i]; level = i; p = n - sum; break; }
}
dfs((long long)level, p);
printf("\n");
} int main()
{
while (~scanf("%lld", &n))
{
if (!n) break;
work();
}
return ;
}
FZU 1064 教授的测试的更多相关文章
- FZU 1064 教授的测试(卡特兰数,递归)
Problem 1064 教授的测试 Accept: 149 Submit: 364 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Des ...
- 栈 && 教授的测试
卡特兰数:https://blog.csdn.net/wu_tongtong/article/details/78161211 https://www.luogu.org/problemnew/sho ...
- JZYZOJ1237 教授的测试 dfs
http://172.20.6.3/Problem_Show.asp?id=1237 锻炼搜索的代码能力,不错的题. 开始对dfs到底向下传递什么搞不清楚,需要想一下,noip难度的题还有这种情况 ...
- 一起买beta版PHP单元测试
一起买beta版PHP单元测试 测试目的 保证代码质量,对各个单元进行测试,可以有效地保证代码的可靠性,让模块在与别的模块整合时出现更少的错误. 单元描述 完成帖子接口 将"正在进行&q ...
- 1组-Alpha冲刺-3/6
一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15544334.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...
- 1组-Alpha冲刺-2/6
一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15535649.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...
- 1组-Alpha冲刺-1/6
一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15526531.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...
- 痞子衡嵌入式:再测i.MXRT1060,1170上的普通GPIO与高速GPIO极限翻转频率
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060/1170上的普通GPIO与高速GPIO极限翻转频率. 按照上一篇文章 <实测i.MXRT1010上的普通GP ...
- 关于xcode6打包以及上线前企业部署测试的说明 --转自张诚教授微博
xcode6如何打包 首先clean然后点击归档 点击打包之后保存 点选第一个以后检查相关证书签名 那么我们开发完以后,在上线前如何给别人测试 有2种方法 1.使用299美金的企业开发者账号搭建企业部 ...
随机推荐
- Co-Debugging JNI with Android Studio and Visual Studio
Tutorials > Android > Integration with other tools > Co-Debugging JNI with Android Studio a ...
- FZU 2086 餐厅点餐(枚举)
///个人感觉vector好看一点 #include<iostream> #include<cstdio> #include<cstring> #include&l ...
- Ubuntu下安装Intellij IDEA和PyCharm
需要先安装JDK 官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载 ...
- Kth order statistcs
Selection: selection is a trivial problem if the input numbers are sorted. If we use a sorting algor ...
- Android消息提示框Toast
Android消息提示框Toast Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,t ...
- JavaBean-- 保存 范围
1. page:当前页 2. request:一次服务器跳转范围中 3. session:一次用户操作范围,重新打开浏览器失效 4. application:整个服务器保存,服务器关闭才失效 定义一个 ...
- git:解决The current branch is not configured for pull No value for key branch.master.merge found in config
网上多半都是命令行下的解决方案,我用的是EGit,所以要在eclipse里(我的版本是kepler)把下面这句话添加到配置文件中. Window->Preference->Team-> ...
- SQL2005附加数据库时遇到的问题:用户组或角色在当前数据库已存在
一次 附加备份数据库的 mdf 文件 成功后 创建登陆用户 但是 无法映射该用户的 对应数据库 出现 用户组或角色在当前数据库已存在 的问题 首先介绍一下sql server中“ ...
- mysql 查询 字段的类型
select column_name,data_type from information_schema.columnswhere table_name = '表名'
- Win7+QTP10.0+IE9无法识别对象的解决方法
在WIN7和IE9环境下使用QTP10,会出现识别不了web对象的情况,具体表现为:添加对象,先打开对象库,再打开IE,点击Add object to local 后,出现白色手指,将其拖拉到百度首页 ...