模拟——洛谷P1185 绘制二叉树
来源:互联网 发布:精品电玩手游刷分软件 编辑:程序博客网 时间:2024/05/22 22:31
https://www.luogu.org/problem/show?pid=1185
哈哈,我的代码是唯一一个不到1kb的;
时间不是最快的,但是我的代码没用hk跑;
要用hk跑的话,估计也快的飞起;
一看题目就感觉很有意思;
我的方法简单来说就是先找规律,然后一个dfs绘图;
首先我们考虑满二叉树;
我们先要确定画布大小;
然后juicy可以找到这么一种规律;
当k=1的时候,画布n=m=1;
当k!=1时
n=3;for(int i=3;i<=k;i++)n*=2;m=6*(1<<(k-2))-1;
这个倒真的是找规律得出的;
所以我们的数组开800*1600就很好了;
然后我们先把这个画布填充成空格;
然后从根节点往下dfs画图;
画图方法在找画布的规律的时候自然而然地发现了;
这个难说啊,其实也是找规律了;
看我代码把
#include<bits/stdc++.h>#define Ll long longusing namespace std;int k,n,m,p,x,y;char c[800][1600];bool f[800][1600];//在第x,y点,a,b是用来判节点的,k表示点还是边,xx,yy表示这个点或这个边的父亲 void dfs1(int x,int y,int a,int b,int k,int xx,int yy){ if(x==n){c[x][y]='o';return;} if(k==1){ c[x][y]='o'; int X=xx+1,Y=(yy-1)*2+1;//左儿子 if(!f[X][Y])dfs1(x+1,y-1,a+1,b,2,X,Y); X=xx+1,Y=yy*2;//又儿子 if(!f[X][Y])dfs1(x+1,y+1,a+1,b,3,X,Y); }else if(k==2){ c[x][y]='/'; if(a*2==b)dfs1(x+1,y-1,1,a,1,xx,yy);//这个就是判断接下来是边还是点 else dfs1(x+1,y-1,a+1,b,2,xx,yy); }else if(k==3){ c[x][y]=92; if(a*2==b)dfs1(x+1,y+1,1,a,1,xx,yy); else dfs1(x+1,y+1,a+1,b,3,xx,yy); }}void make(int k){ n=3; for(int i=3;i<=k;i++)n*=2; m=6*(1<<(k-2))-1;//计算画布大小 for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)c[i][j]=' ';//填充画布 dfs1(1,m/2+1,1,n,1,1,1); }int main(){ scanf("%d%d",&k,&p); while(p--){scanf("%d%d",&x,&y);f[x][y]=1;}//记录这个节点是否可以画 if(k==1)n=m=1,c[1][1]='o';else make(k); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++)cout<<c[i][j];cout<<endl; }}
阅读全文
1 0
- 模拟——洛谷P1185 绘制二叉树
- 绘制二叉树
- 【u103】绘制二叉树
- C++——NOIP模拟题——二叉树
- 二叉树(按层遍历——队列模拟)
- 模拟二叉树 — 纪念植树节……
- 使用graphviz绘制二叉树
- 二叉树简单模拟
- Canvas的初识——模拟表盘数字绘制
- UVA 712(二叉树模拟)
- UVA 122 二叉树模拟
- tyvj P1185 营业额统计
- 二叉树绘制器BinaryTreeDrawer实现
- 使用graphviz绘制二叉树(二)
- python绘制二叉树的实现
- Windows系统功能模拟 C++(EasyX插件)—— 3rd 界面绘制(一)
- Windows系统功能模拟 C++(EasyX插件)—— 4th 界面绘制(二)
- Windows系统功能模拟 C++(EasyX插件)—— 5th 界面绘制(三)
- 机器笨猫的日记
- Java的特点
- 灰度图像的一阶和二阶导数代码实现
- bzoj2620[Usaco2012 Mar]Haybale Restacking
- 探索关系抽取中的多变知识
- 模拟——洛谷P1185 绘制二叉树
- SCU-4396 麦野沉利与御坂美琴的战斗
- python开发传统蒙古文OCR(一)
- 第一个小应用———Java计算器
- 使用IDEA在Spring Boot中集成JSP
- 13期 6月期刊自荐
- linux(三)帮助命令
- UESTC 1633 去年春恨却来时,落花人独立,微雨燕双飞 Dijkstra+构造
- 微信小程序 | 多个按钮或VIEW,点击改变状态 简易的实现方法