https://www.luogu.org/problemnew/show/P1087
我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。
FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2^N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:
1) T的根结点为R,其类型与串S的类型相同;
2) 若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1构造R的左子树T1,由右子串S2构造RRR的右子树T2。
现在给定一个长度为2^N的“01”串,请用上述构造方法构造出一棵FBI树,并输出它的后序遍历序列。
输入格式:
第一行是一个整数N(0≤N≤10)
第二行是一个长度为2^N的“01”串。
输出格式:
一个字符串,即FBI树的后序遍历序列。
输入样例#1: 复制
3 10001011
输出样例#1: 复制
IBFBBBFIBFIIIFF
对于40%的数据,N≤2
对于全部的数据,N≤10
noip2004普及组第3题
思路:就照着题意模拟呗,因为后序遍历是左右根的顺序,因此先访问左子树,再访问右子树,最后遍历该区间内的S串,输出根结点的值。
#include<iostream>
using namespace std;
int n;
string s;
void PostOrder(int l,int r);//左右根
int main()
{
cin>>n;
cin>>s;
PostOrder(0,(1<<n)-1);
return 0;
}
void PostOrder(int l,int r)//后序遍历 左右根
{
if(l<r)
{
PostOrder(l,(l+r)/2); //按照题意 等长分开 先左子树
PostOrder((l+r)/2+1,r); //再右子树
}
int t1=1,t2=1;
for(int i=l;i<=r;i++)
{
if(s[i]=='0')
t2=0;
else if(s[i]=='1')
t1=0;
}
if(t1)
cout<<"B";
else if(t2)
cout<<"I";
else
cout<<"F";
}
文章目录32 | 为什么还有 kill 不掉的语句?收到 kill 以后,线程做什么?另外两个关于客户端的误解小结上期问题时间32 | 为什么还有 kill 不掉的语句?在 MySQL 中有两个 kill 命令:一个是 kill query + 线程 id ,表示终止这个线程中正在执行的语句;一个是 kill connection + 线程 id ,这里 connection 可缺省,表示断开这个线程的连接,当然如果这个线程有语句正在执行,也是要先停止正在执行的语句的。不知道你在使用 MySQL
Python与算法社区已有446篇原创,干货满满三步加星标010203三步加星标你好,我是 zhenguo经常有粉丝问我,手上有没有数据集,几M大小的,尽量真实点的。今天我为你推...
1,背景:程序在A服务器上,图片在B图片服务器上2,客户端上传文件到A服务器上,A服务器,在通过流的方式,将图片发送给B服务器上服务器A代码 public class UploadImage : IHttpHandler { public void ProcessRequest(HttpContext context)
切换到要操作的项目文件夹或进入本地项目文件然后右键打开git bash here 命令框切换到要操作的项目文件夹命令cd ProjectPath查看项目分支(包括本地和远程)执行命令git branch -a删除本地分支 执行命令git branch -d 分支名删除远程分支 执行命令git push origin –delete 分支名 切换分...
接口:PCIe M.2 SATA mSATA总线:SATA PCI-E 协议: NVMe,AHCI和IDE是传输协议(语言)。 它们运行在诸如PCIe或SATA(口头,书写)之类的传输接口之上。a) 三星 850 EVO M.2 接口,SATA 总线,AHCI 协议b) 三星 SM951 M.2 接口,PCIe 总线,AHCI 协议c) 三星 SM951 M.2 接口,PCIe 总线,N...
【题目链接】ybt 1178:成绩排序OpenJudge NOI 1.10 03:成绩排序【题目考点】1. 结构体 排序【君义精讲】排序算法2. 多关键字排序方法1:将多关键字的排序条件整合为单一排序条件方法2;使用稳定的排序算法进行多趟排序【解题思路】对结构体对象排序,比较的是成员变量,交换的是对象【题解代码】解法1:将多关键字的排序条件整合为单一排序条件整合成的排序条件为:分数更高,或分数相同且名字字典序小,则排在前面。冒泡排序#include<bits/stdc
##ArrayList的基本实现1、通过Object类型的数组来实现,所以数组中需要存储基本类型数据的时候需要使用包装类```javapublicclassArrayList<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.Serializable{privatestaticfinall...
华为云ECS安装Redis后在服务器端验证能够正常启动。但是通过本机的客户端工具RedisDesktopManager访问时提示无法连接。需要检查如下两项:CentOS防火墙华为云的安全规则登录华为云网站,找到对应的ECS服务器,添加允许访问Redis端口的过滤规则。开启防火墙。[[email protected] redis]# firewall-cmd --query-port=637...
本文首发于政采云前端团队博客:浅析 vue-router 源码和动态路由权限分配https://www.zoo.team/article/vue-router-analysis背景上月立...
要显示JTable组件(需要用到)TableModel接口(需要下面这个类才能实现)DefaultTableModel类主要步骤:创建表格模型对表格模型进行操作将表格模型添加到表格JTable中将JTable添加到滚动面板上(JScrollPane) //第一步:创建表格模型 DefaultTableModel tablemodel = new DefaultTableMo...
错误截图错误分析遇到这种sql语法错误,可以直接将sql语句复制到数据库中看看把?改成数据可以更好的分析报错原因错误原因这里数据库里有个字段group与sql语句里的关键字重名了所以发生报错解决方案修改字段名即可修改后...
在做莫烦的神经网络mnist手写字体数据分类的时候,遇到了bugConnectionAbortedError: [WinError 10053]在网上找了一天也没找到,其他人报错基本上都是写爬虫的时候的错误,我在想可能还是网络的问题,下载mnist数据包的源地址可能速度并不快,在网上找了下载mnist时timeout的解决方法,解决了bug在错误信息里面找到mnist,py文件,点进去:然后修改最上面的mnist数据来源:把原来的DEFAULT_SOURCE_URL = ‘https://st