Solid Geometry Homework

题目连接:

http://acm.hdu.edu.cn/showproblem.php?pid=5298

Description

Yellowstar is studying solid geometry recently,and today’s homework is about the space,plane and sphere.So he draw many planes and spheres in the draft paper.These infinite planes and (the surface of)spheres divides the whole drawing space(which can be considered as a infinite 3D-space) into many disjoint regions.Planes and spheres forms the borders of these regions,and they don’t belong to any regions.

Then he comes up with a crazy idea:color the whole space with crayons.He wants that one region has only one color,and two adjacent regions should be colored differently (“adjacent” means the area of two regions’ common borders is greater than zero).Unfortunately,he has only two crayons:a yellow one and a red one.

Yellowstar likes yellow very much,so he gives some coordinates.The regions these points belong to should be colored yellow.

Given positions of all the planes and spheres and the coordinates mentioned above.You should determine:Is there a way to satisfy all the requests?Yellowstar also gives some other coordinates.He wants to know which color they will be while all the requests are satisfied.

Input

The first line contains an integer T,denoting the number of the test cases.

For each test case, the first line contains 4 integers m,n,p and q, denoting the number of planes,spheres,points and queries.

Then m lines follows,each containing four integers a,b,c and d,denoting the linear equation(ax+by+cz+d=0) of this plane.|a|+|b|+|c|>0.

Then n lines follows,each containing four integers x,y,z and r,denoting the center coordinate(x,y,z) and radius of this sphere.

Then p lines follows, each containing three integers x,y,z,denoting point(x,y,z),the region it belongs to should be colored yellow.

Next q lines are queries.Each contains three integers x,y,z-the coordinate of this point.You need to output which color it will be.

T<=30,0<=m<=100,0<=n<=10,0<=p<=200,1<=q<=2000,|all given numbers|<=10^6,any two planes or spheres aren’t coincidence.No point lies on given planes or spheres.

There is a blank line before each case.

Output

For each case,if there is no such a coloring way to color the whole space and meet all the requests,print“Impossible”.

Otherwise,for each query,print a line.If the color of this point can be certainly inferred,print it(’Y’ for yellow or ’R’ for red);if not(both are possible),print”Both”.

Print a blank line between adjacent cases.

Sample Input

3

1 1 1 2

0 0 1 0

0 0 0 2

0 0 1

0 0 -1

0 0 4

1 1 2 1

0 0 1 0

0 0 0 2

0 0 1

0 0 -1

0 0 4

1 1 0 2

0 0 1 0

0 0 0 2

0 0 4

0 0 -1

Sample Output

R

R

Impossible

Both

Both

Hint

题意

在一个三维平面上有一堆平面,有一堆圆,然后这些玩意儿把平面切成了很多块。

然后每一块要么是红色,要么是黄色。

相邻的两块颜色不同。

现在已知p个点的颜色是黄色。

然后问你接下来q个点的颜色是啥。

题解:

首先其实这个空间的颜色分布已经被那p个点唯一确认了。

所以我们只要知道一个区域的颜色就好了。

因为只有两种颜色,判断一个点的颜色只要知道和这些圆的位置关系和这些平面的位置关系就好了。

然后这道题就结束了……

大概就是这样 喵。

代码

#include<bits/stdc++.h>
using namespace std; struct node
{
long long a,b,c,d;
}plane[120],circle[12],P[2005],P2[205]; int n,m,p,q; int check_plane(node A,node B)
{
return A.a*B.a+A.b*B.b+A.c*B.c+A.d>0?1:0;
} int check_cirle(node A,node B)
{
return (A.a-B.a)*(A.a-B.a)+(A.b-B.b)*(A.b-B.b)+(A.c-B.c)*(A.c-B.c)>A.d*A.d?1:0;
} int check(node a)
{
int ans = 0;
for(int i=0;i<m;i++)
ans^=check_plane(plane[i],a);
for(int i=0;i<n;i++)
ans^=check_cirle(circle[i],a);
return ans;
}
void solve()
{
scanf("%d%d%d%d",&m,&n,&p,&q);
for(int i=0;i<m;i++)
scanf("%lld%lld%lld%lld",&plane[i].a,&plane[i].b,&plane[i].c,&plane[i].d);
for(int i=0;i<n;i++)
scanf("%lld%lld%lld%lld",&circle[i].a,&circle[i].b,&circle[i].c,&circle[i].d);
if(p==0){
for(int i=0;i<q;i++)
{
scanf("%lld%lld%lld",&P[i].a,&P[i].b,&P[i].c);
printf("Both\n");
}
return;
}
for(int i=0;i<p;i++)
scanf("%lld%lld%lld",&P2[i].a,&P2[i].b,&P2[i].c);
for(int i=0;i<q;i++)
scanf("%lld%lld%lld",&P[i].a,&P[i].b,&P[i].c);
int flag = check(P2[0]);
for(int i=0;i<p;i++)
if(check(P2[i])^flag==1)
{
printf("Impossible\n");
return;
}
for(int i=0;i<q;i++)
{
if(check(P[i])^flag==1)
printf("R\n");
else
printf("Y\n");
}
}
int main()
{
int t;scanf("%d",&t);
while(t--)
{
solve();
if(t)puts("");
}
return 0;
}

HDU 5298 Solid Geometry Homework 暴力的更多相关文章

  1. HDU 2920 分块底数优化 暴力

    其实和昨天写的那道水题是一样的,注意爆LL $1<=n,k<=1e9$,$\sum\limits_{i=1}^{n}(k \mod i) = nk - \sum\limits_{i=1}^ ...

  2. hdu 4932 Miaomiao&#39;s Geometry(暴力枚举)

    pid=4932">Miaomiao's Geometry                                                               ...

  3. hdu 5277 YJC counts stars 暴力

    YJC counts stars Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  4. HDU 5762 Teacher Bo (暴力)

    Teacher Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...

  5. hdu 4712 Hamming Distance(随机函数暴力)

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

  6. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  7. HDU 5442 Favorite Donut(暴力 or 后缀数组 or 最大表示法)

    http://acm.hdu.edu.cn/showproblem.php?pid=5442 题意:给出一串字符串,它是循环的,现在要选定一个起点,使得该字符串字典序最大(顺时针和逆时针均可),如果有 ...

  8. HDU 5273 Dylans loves sequence 暴力递推

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5273 bc:http://bestcoder.hdu.edu.cn/contests/con ...

  9. 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6152 Friend-Graph 暴暴暴暴力

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6152 题意:判定一个无向图是否有三个点的团或者三个点的独立集. 解法:Ramsey theorem,n ...

随机推荐

  1. 【shell】shell编程(五)-读取参数

    通过前几篇文章的学习,我们学会了shell的基本语法.在linux的实际操作中,我们经常看到命令会有很多参数,例如:ls -al 等等,那么这个参数是怎么处理的呢? 接下来我们就来看看shell脚本对 ...

  2. Python抽象类和接口类

    一.抽象类和接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名) ...

  3. lumen 框架的特殊使用

    1. 配置代码格式管理工具: composer require squizlabs/php_codesniffer, 使用 php artisan cs 检查代码格式: 2.单元测试用例编写 1./d ...

  4. [ python ] 各种推导式

    各种推导式,主要使用示例演示用法 列表生成式 示例1:求0-9每个数的平方 li = [x*x for x in range(10)] print(li) # 执行结果: # [0, 1, 4, 9, ...

  5. IDEA 部署项目的时候出错:Jar not loaded错误

    2011-10-18 17:03:52 org.apache.catalina.loader.WebappClassLoader validateJarFile 信息: validateJarFile ...

  6. 创建 dblink

    目的:oracle中跨数据库查询       两台数据库服务器db_A(本地)和db_B(远程192.168.1.100),db_A下用户user_a 需要访问到db_B下user_b的数据解决:查询 ...

  7. js实现静态页面跳转传参

    最近有个项目: 存静态web服务,一个新闻页面列表出所有新闻摘要信息,然后通过点击新闻详情访问到该新闻的详情页面: 新闻展示的页面通过ajax请求接口获取到新闻的摘要信息,预计想通过id的方式访问到新 ...

  8. DB2:FETCH FIRST 1 ROWS ONLY

    DB2:FETCH FIRST ROWS ONLY,在Oracle中使用where rownum=1代替 DB2: SELECT INSTORAGENO FROM ( SELECT max(AUDIT ...

  9. php正则匹配以“abc”开头且不能以“xyz”结尾的字符串

    本文介绍下,用php正则区配以"abc"开头的,且不能以"xyz"结尾的字符串的方法,有需要的朋友参考下. 要求:用php正则表达式匹配以“abc”开头,但结尾 ...

  10. beego与websocker的集成

    上周刚好遇到这个问题. 周末在家里按网上的方案测试了一下. 希望下周进展顺利~~ URL: http://blog.csdn.net/u012210379/article/details/729120 ...