[UVA297] Quadtrees 四叉树
来源:互联网 发布:红蚁网络运维 编辑:程序博客网 时间:2024/05/29 01:54
是个挺简单的题,也是第一个完全自己打出来的题,值得庆贺~
题干里那个黑白点图其实没什么意思,直接看那颗树就能看懂了,就是通过先序构造出四叉树.假如读到p,就长出4个儿子,且该节点的值为0,它的儿子假如有值,则为本来应该赋给该节点值的1/4;假如读到f,那么这个节点被赋值,且不再往下长;假如读到e,那么不赋值,也没有儿子.每组输出为2行,是两棵树,然后要求输出两棵树的"合并"的权值.树的合并是指假如处于同一位置的节点在一棵树上赋过值,则不再读它的儿子,否则取两个值中较大的那个.
代码如下:
#include<bits/stdc++.h>#define rep(i,a,n) for(i=a;i<=n;i++)#define per(i,a,n) for(i=a;i>=n;i--)#define maxn 1<<10using namespace std;struct node{int val;node* v1;node* v2;node* v3;node* v4;};void read_t1(node* v,int value);void read_t2(node* v,int value);node* newnode();void dfs(node* v);int rnd,ans;node* root;int main(){scanf("%d",&rnd);while(rnd--){root=newnode();ans=0;read_t1(root,1024);read_t2(root,1024);dfs(root);printf("There are %d black pixels.\n",ans);}}node* newnode(){return new node();}void read_t1(node* v,int value){char tmp;cin>>tmp;if(tmp=='p'){v->val=0;v->v1=newnode();v->v2=newnode();v->v3=newnode();v->v4=newnode();read_t1(v->v1,value/4);read_t1(v->v2,value/4);read_t1(v->v3,value/4);read_t1(v->v4,value/4);}else if(tmp=='f'){v->val=value;}}void read_t2(node* v,int value){char tmp;cin>>tmp;if(v->val==0){if(tmp=='f') v->val=value;else if(tmp=='p'&&v->v1==NULL){v->val=0;v->v1=newnode();v->v2=newnode();v->v3=newnode();v->v4=newnode();read_t2(v->v1,value/4);read_t2(v->v2,value/4);read_t2(v->v3,value/4);read_t2(v->v4,value/4);}else if(tmp=='p'&&v->v1!=NULL){read_t2(v->v1,value/4);read_t2(v->v2,value/4);read_t2(v->v3,value/4);read_t2(v->v4,value/4);}}}void dfs(node* v){if(v->val){ans+=v->val;return ;}else if(v->v1!=NULL){dfs(v->v1);dfs(v->v2);dfs(v->v3);dfs(v->v4);return ;}}
0 0
- [UVA297] Quadtrees 四叉树
- Quadtrees UVA297
- uva297 - Quadtrees
- UVA297 - Quadtrees
- UVA297 Quadtrees(递归!!!)
- Uva297——Quadtrees
- uva297 Quadtrees (树的重建)
- 例题6-11 UVa297 Quadtrees(四分树)
- Uva297 Quadtrees【递归建四分树】【例题6-11】
- Uva297 Quadtrees【递归建四分树】【例题6-11】
- UVa297 例题6-11 四分树(Quadtrees)
- UVA297四叉树
- uva297-四叉树
- uva297(四叉树建立)
- uva297
- UVA297
- uva297
- uva297
- 简单优雅的让你的app一直运行在后台
- Android从本地选择文件并判断文件类型并获取选到文件大小的方法
- python基础
- 网络与GPRS判断工具类
- UVa10815 安迪的第一个字典
- [UVA297] Quadtrees 四叉树
- Action_立方体
- CollabNetSubversionEdge错误集合
- activity设置成dialog主题后去标题栏并设置弹出位置
- XML
- 统一资源管理与调度平台入门
- Spring@ResponseBody未生效,前端报404的解决办法
- 终于成功安装了win7 64位pygame
- 图像特征点检测与匹配评价——量化