2018_2_11_Creating a Quadtree_四叉树
2018-02-11 22:21
309 查看
https://vjudge.net/problem/UVA-11941
m可以为0;
#include<cstring>
#include <iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>
using namespace std;
char g[1024][1024];
char node[1024*1024];
set<int> si;
int a[30];
void init(){
int t=1;
for(int i=0;i<30;i++){
si.insert(t*=2);
a[i]=t*2;
}
}
int build(int k,int lx,int ly,int rx,int ry){
if(lx==rx&&ly==ry)
return node[k]=(1<<g[lx][ly]);
int mx=(lx+rx)/2,my=(ly+ry)/2;
int v=0;
v|=build(k*4,lx,ly,mx,my);
v|=build(k*4+1,mx+1,ly,rx,my);
v|=build(k*4+2,lx,my+1,mx,ry);
v|=build(k*4+3,mx+1,my+1,rx,ry);
return node[k]=v;
}
void dfs(int u){
if(node[u]==3){
if(u>1)putchar('*');
dfs(u*4);
dfs(u*4+1);
dfs(u*4+2);
dfs(u*4+3);
}else{
if(node[u]==1)putchar('0');
else putchar('1');
}
}
int main(){
int z;
scanf("%d",&z);
while(getchar()!='\n');
char line[32767];
init();
while(z--){
gets(line);
stringstream sin(line);
string token;
int n;
sin>>n;
if(si.find(n)==si.end()||n<=1){
puts("Size is invalid");continue;
}
memset(g,0,sizeof(g));
int sx,sy,ex,ey;
while(sin>>token){
sscanf(token.c_str(),"(%d,%d)",&sx,&sy);
if(sin>>token){
sscanf(token.c_str(),"(%d,%d)",&ex,&ey);
sx--,sy--,ex--,ey--;
for(int i=sx;i<=ex;i++)
for(int j=sy;j<=ey;j++)
g[i][j]=1;
}
}
build(1,0,0,n-1,n-1);
dfs(1);
puts("");
}
return 0;
}
m可以为0;
#include<cstring>
#include <iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>
using namespace std;
char g[1024][1024];
char node[1024*1024];
set<int> si;
int a[30];
void init(){
int t=1;
for(int i=0;i<30;i++){
si.insert(t*=2);
a[i]=t*2;
}
}
int build(int k,int lx,int ly,int rx,int ry){
if(lx==rx&&ly==ry)
return node[k]=(1<<g[lx][ly]);
int mx=(lx+rx)/2,my=(ly+ry)/2;
int v=0;
v|=build(k*4,lx,ly,mx,my);
v|=build(k*4+1,mx+1,ly,rx,my);
v|=build(k*4+2,lx,my+1,mx,ry);
v|=build(k*4+3,mx+1,my+1,rx,ry);
return node[k]=v;
}
void dfs(int u){
if(node[u]==3){
if(u>1)putchar('*');
dfs(u*4);
dfs(u*4+1);
dfs(u*4+2);
dfs(u*4+3);
}else{
if(node[u]==1)putchar('0');
else putchar('1');
}
}
int main(){
int z;
scanf("%d",&z);
while(getchar()!='\n');
char line[32767];
init();
while(z--){
gets(line);
stringstream sin(line);
string token;
int n;
sin>>n;
if(si.find(n)==si.end()||n<=1){
puts("Size is invalid");continue;
}
memset(g,0,sizeof(g));
int sx,sy,ex,ey;
while(sin>>token){
sscanf(token.c_str(),"(%d,%d)",&sx,&sy);
if(sin>>token){
sscanf(token.c_str(),"(%d,%d)",&ex,&ey);
sx--,sy--,ex--,ey--;
for(int i=sx;i<=ex;i++)
for(int j=sy;j<=ey;j++)
g[i][j]=1;
}
}
build(1,0,0,n-1,n-1);
dfs(1);
puts("");
}
return 0;
}
相关文章推荐
- 四叉树和八叉树剔除Quadtree and Octree Culling Alternative
- [LeetCode] Construct Quad Tree 建立四叉树
- 基于四叉树(QuadTree)的LOD地形实现
- 基于四叉树(QuadTree)的LOD地形实现
- d3,四叉树,quadtree
- C语言实现一个四叉树quadtree
- 基于四叉树(QuadTree)的LOD地形实现
- [转]基于四叉树(QuadTree)的LOD地形实现
- [APIO2018]选圆圈(KD-Tree)
- 对cvMatchContourTree的测试代码(还是没找出关系) , 第八章11题
- Image Processing Transform Coding Using the Residual Quadtree (RQT)
- leetcode 11: Convert Sorted Array to Binary Search Tree
- 512 个 AI 职位、11 万美元年薪,盘点 2018 最佳人工智能公司
- Code the Tree_2018_2_21
- D. Tree(ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined)
- 台湾大学林轩田机器学习技法课程学习笔记11 -- Gradient Boosted Decision Tree
- 2018_2_11_Apple Tree_树状数组
- 297 - Quadtrees (四叉树)
- UVA 297 Quadtrees(四叉树)
- Creating TreeTables in Swing