题目链接:https://vjudge.net/problem/UVA-297

题目大意:如上图所示,可以用一个四分树来表示一个黑白图像,方法是用根节点表示整副图像,然后把行列各等分两等分,按照图中的方式进行编号,从左到右对应4个结点

如果某子结点对应的区域全为黑或白,则直接用一个黑结点或者白结点表示:如果既有黑油油白  则用一个灰结点表示  并且为这个区域递归建树。

给出两颗树的现需遍历,求二者合并之后(黑色部分合并)黑色像素的个数。p表示中间结点,f表示黑色   e表示白色

思路:首先一定要把题意读懂。  首先给你一幅图,这幅图的像素的是1024  是正方形区域  你可以看做是32*32的区域   每个块可以看做1 2 3 4个块

问你两棵树合并之后有多少个黑色像素的点。

具体怎么做呢 ?   只要我们能编写一个“画出来”的过程  边画边统计即可!

如果碰到的是p  那么接着画新的区域。  我们可以用一个数组来存储改点是否是黑色  刚开始区域是32*32的大小  我们可以看做起点是(0,0)终点是(31,31)的1024个点

四个区域正如题目要求的一样  一直遍历下去就行了

看代码:

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
const int len=32;
const int maxn=1024+10;
char s[maxn];
int buf[len][len],cnt;
/*
把字符串s[p...]导出到以(r,c)为左上角,边长为w的缓冲区内
*/
//draw(s,p,0,0,len);
void draw(const char* s,int& p,int r,int c,int w)
{char ch=s[p++];if(ch=='p'){draw(s,p,r,c+w/2,w/2);//1draw(s,p,r,c,w/2);//2draw(s,p,r+w/2,c,w/2);//3draw(s,p,r+w/2,c+w/2,w/2);//4
    }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++;}}}
}
int main()
{int t;cin>>t;while(t--){memset(buf,0,sizeof(buf));cnt=0;for(int i=0;i<2;i++){cin>>s;int p=0;draw(s,p,0,0,len);}printf("There are %d black pixels.\n",cnt);}return 0;
}

转载于:https://www.cnblogs.com/caijiaming/p/10352762.html

Quadtrees UVA - 297相关推荐

  1. 【两种解法】Quadtrees UVA - 297(隐式建树+显式建树)

    立志用最少的代码做最高效的表达 A quadtree is a representation format used to encode images. The fundamental idea be ...

  2. UVa 297 - Quadtrees 四叉树, 及其在编码图像的应用

    297 - Quadtrees 4898 41.55% 1811 90.39% 题目链接: http://uva.onlinejudge.org/index.php?option=com_online ...

  3. UVa 297 - Quadtrees

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

  4. UVA 297 Quadtrees

    UVA_297 由于这个题目可以看成是完全四叉树,所以借用了一下线段树的思想,把题目转化成了对区间进行两次染色,然后求最后色块的个数. 当然我的程序写得复杂了,lazy可以不用的,在统计的时候遇到黑色 ...

  5. UVa 297 四分树

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

  6. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  7. Uniform Grid Quadtree kd树 Bounding Volume Hierarchy R树 搜索

    Region 資料結構 :  Uniform Grid 楔子 請你嘗試發掘,這一系列的資料結構是為了解決什麼問題呢? Uniform Grid 嗯,就是方格紙.將整個世界劃分為等寬方格. 實作方式是一 ...

  8. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  9. 算法竞赛入门竞赛 入门经典 第六章 个人记录

    UVa 210 并行程序模拟(放弃 || 待补) 没看懂题意,但是有百度了一下duque 算是对duque有了一个大致的认识和了解 当然也有尝试. 本来想着去hdu找一些duque的题 结果 好像可以 ...

最新文章

  1. python和java一样吗-Java与Python到底有什么区别和共同点详细对比
  2. flex与java实现增删改查
  3. boost::hana::make_pair用法的测试程序
  4. [BUUCTF-pwn]——[BJDCTF 2nd]rci
  5. .NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记
  6. npm i依赖版本兼容问题处理
  7. B端——复杂业务表单设计
  8. View绘制--onMeasure() 、onLayout()
  9. 【京东科技】视觉基础研究部研究型实习生招聘
  10. svn图文教程-宋正河整理
  11. 解决:AttributeError: ‘str‘ object has no attribute ‘decode‘
  12. 新浪短链接:15款最佳t.cn短网址在线生成工具
  13. 德莱联盟(判断线段是否相交)
  14. 为什么走线选择50欧姆阻抗
  15. 网络文件存储系统(三)fastdfs分布式文件系统实战
  16. Windbg串口联调
  17. 哔哩哔哩 声音太小,怎么调大?
  18. html5 indexeddb,关于使用HTML5提供的indexedDB的一下心得
  19. 编程进阶:Java小白的序列化Serializable接口
  20. smart原则_高效能宝宝养成记之七 SMART原则:梦想与空想只隔一个目标的距离

热门文章

  1. CALayer 简单的使用
  2. 移动端点击a链接出现蓝色背景问题解决
  3. 解决dom4j加载xml文件性能慢的问题
  4. 解决VMware虚拟机网络时长中断的问题
  5. 【实践】美团外卖广告智能算力的探索与实践
  6. 【白皮书分享】人工智能“新基建”发展白皮书.pdf(附下载链接)
  7. 【专访】首届腾讯社交广告“高校算法大赛”落幕 冠亚季军团队参赛心得精彩分享
  8. 局域网通讯工具_五大核心开启工业通讯创新之门——西门子工业网络专家计划打造最强行业生态...
  9. python支付宝自动支付_python-支付宝支付示例
  10. 2019年的流水账和总结