# Quadtrees

四分树就是一颗一个结点只有4个儿子或者没有儿子的树

【题目链接】UVa 297 Quadtrees

【题目类型】树的递归

&题意:
一个图片,像素是32*32,给你两个先序递归的字符串,要你把他俩合起来输出面积。p代表结点,f代表黑色,e代表白色。

&题解:
用字符串来模拟buf32*32的数组,递归模拟出模型,黑色的涂成1,白色的不处理(也就是0),最后输出1的个数就好了

&代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
#define cle(a,val) memset(a,(val),sizeof(a))
#define rep(i,b) for(ll i=0;i<(b);i++)
const int len=32;
const int maxn=1024+5;
char s[maxn];
int buf[len][len],cnt;
//s是输入的串,p是处理到第几个了,r和c是处理区域的左上角坐标,w是边长(因为处理区域是正方形,所以r c w就可以确定区域了)
void draw(const char* s,int& p,int r,int c,int w){
char ch=s[p++];
//是p继续递归
if (ch=='p'){
draw(s,p,r,c+w/2,w/2); //1
draw(s,p,r,c,w/2); //2
draw(s,p,r+w/2,c,w/2); //3
draw(s,p,r+w/2,c+w/2,w/2); //4
}
//黑色就把这个区域给涂成1
else if (ch=='f'){
for(int i=r;i<r+w;i++)
for(int j=c;j<c+w;j++)
if (buf[i][j]==0) buf[i][j]=1,cnt++;
}
} void Solve()
{
cle(buf,0);
cnt=0;
rep(i,2){
scanf("%s",s);
int p=0;
draw(s,p,0,0,len);
}
printf("There are %d black pixels.\n",cnt);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
// freopen("out.txt","w",stdout);
#endif
int T;cin>>T;while(T--)
Solve();
return 0;
}

UVa 297 Quadtrees(树的递归)的更多相关文章

  1. UVA.297 Quadtrees (四分树 DFS)

    UVA.297 Quadtrees (四分树 DFS) 题意分析 将一个正方形像素分成4个小的正方形,接着根据字符序列来判断是否继续分成小的正方形表示像素块.字符表示规则是: p表示这个像素块继续分解 ...

  2. UVa 297 (四分树 递归) Quadtrees

    题意: 有一个32×32像素的黑白图片,用四分树来表示.树的四个节点从左到右分别对应右上.左上.左下.右下的四个小正方区域.然后用递归的形式给出一个字符串代表一个图像,f(full)代表该节点是黑色的 ...

  3. UVA - 297 Quadtrees (四分树)

    题意:求两棵四分树合并之后黑色像素的个数. 分析:边建树边统计. #include<cstdio> #include<cstring> #include<cstdlib& ...

  4. uva 297 quadtrees——yhx

    Quadtrees  A quadtree is a representation format used to encode images. The fundamental idea behind ...

  5. UVa 297 - Quadtrees

    题目:利用四叉树处理图片,给你两张黑白图片的四叉树,问两张图片叠加后黑色的面积. 分析:搜索.数据结构.把图片分成1024块1*1的小正方形,建立一位数组记录对应小正方形的颜色. 利用递归根据字符串, ...

  6. UVA 297 Quadtrees(四叉树建树、合并与遍历)

    <span style="font-size: 18pt; font-family: Arial, Helvetica, sans-serif; background-color: r ...

  7. UVa 297 Quadtrees -SilverN

    A quadtree is a representation format used to encode images. The fundamental idea behind the quadtre ...

  8. UVa 297 四分树

    感觉特别像那个分治的日程表问题.是f的话就填,否则就不填,然后同一个表填两次.那么就是最后的结果. #include <iostream> #include <cstring> ...

  9. UVa 839 -- Not so Mobile(树的递归输入)

    UVa 839 Not so Mobile(树的递归输入) 判断一个树状天平是否平衡,每个测试样例每行4个数 wl,dl,wr,dr,当wl*dl=wr*dr时,视为这个天平平衡,当wl或wr等于0是 ...

随机推荐

  1. LB负载均衡集群及DR模式配置

    一.系统环境准备: 1.dir服务器 主机名称:dir 系统环境:CentOS release 6.5 (Final) 外网ip:192.168.1.203(网络模式桥接) vip:192.168.1 ...

  2. codeForce-19D Points (点更新+离散化)

    题目大意:在二维坐标系的x正半轴,y正半轴和第一象限内,有三种操作: 1.add x,y (添加点<x,y>): 2.remove x,y(移除点<x,y>): 3.find ...

  3. JAVA 新闻

    Oracle已对Java失去兴趣?Java社区能否扭转乾坤? http://news.cnblogs.com/n/549566/ http://mp.weixin.qq.com/s?__biz=MjM ...

  4. js字符串函数

    JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a ...

  5. 写window应用程序日志System.Diagnostics.EventLog.WriteEntry

    System.Diagnostics.EventLog.WriteEntry( MySource , Writing to event log. ); 可以写window应用程序日志 查看的地方:右击 ...

  6. Python_Day6_反射_正则表达式之篇

    一.反射 定义:利用字符串形式去对象(模块)中操作(寻找/检查/删除/设置)成员 #getattr:获取模块中属性 #hasattr:检查模块中是否存在某个成员(函数) #delattr:删除模块中成 ...

  7. linux服务之nfs

    开发语言:rpc编程环境 服务器端:在linux平台下部署 客户端:一般是cli界面下的mount命令 相关包:rpcbind,nfs-utils 背景 http://nfs.sourceforge. ...

  8. #linux包之tcpdump之tcpdump命令

    概述 man tcpdump 已阅 yum install tcpdump Downloading Packages:(1/2): libpcap-1.4.0-1.20130826git2dbcaa1 ...

  9. nedb nodejs 数据库学习

      // Type 1: In-memory only datastore (no need to load the database) var Datastore = require('nedb') ...

  10. es6新特性

    变量-------------------------- let, const:必须直接给一个变量赋值.注意,对象的属性或数组成员还是可以改变的. const MY_OBJECT = {some: 1 ...