WOJ1271-How I Wonder What You Are
来源:互联网 发布:库里15到16赛季数据 编辑:程序博客网 时间:2024/06/08 16:19
One of the questions children often ask is ?How many stars are there in the sky?? Under ideal conditions, even with the naked eye, nearly eight thousands are observable in the northern hemisphere. With a decent telescope, you may find many more, but as the sight field will be limited, you may find much less at a time.
Children may ask the same questions to their parents on a planet of some solar system billions of light-years away from the Earth. Their telescope are similar to ours with circular sight fields, but alien kids have many eyes and ca look into different directions at a time through may telescopes.
Given a set of positions of stars, a set of telescopes and the directions they are looking to, your task is to count up how many stars can be seen through these telescopes.
输入格式
The input consists of one or more datasets. The number of datasets is less than 50. Each dataset describes stars and the parameters of the telescopes used.
The first line of a dataset contains a positive integer n not exceeding 500, meaning the number of stars. Each of the n lines following it contains three decimal fractions, sx, sy, and sz. They give the position (sx, sy, sz) of the star described in Euclidean coordinates. You may assume −1000 ≤ sx ≤ 1000, −1000 ≤ sy ≤ 1000, −1000 ≤ sz ≤ 1000, and (sx, sy, sz) ≠ (0, 0, 0).
Then comes a line containing a positive integer m not exceeding 50, meaning the number of telescopes. Each of the following m lines contains four decimal fractions, tx, ty, tz and ψ, describing a telescope.
The first three numbers represent the direction of the telescope. All the telescopes are at the origin of the coordinate system (0, 0, 0) (we ignore the size of the planet). The three numbers give the point (tx, ty, tz) which can be see in the center of the sight through the telescope. You may assume −1000 ≤ tx ≤ 1000, −1000 ≤ ty ≤ 1000, −1000 ≤ tz ≤ 1000, and (tx, ty, tz) ≠ (0, 0, 0).
The fourth number ψ (0 ≤ ψ ≤ π ⁄ 2) gives the angular radius, radians, of the sight field of the telescope. Let us define that θi,j is the angle between the direction of the i-th star and the center direction of the j-th telescope and ψj is the angular radius of the sight field of the j-th telescope. the i-th star is observable through the j-th telescope if and only if θi,j is less than ψj. You may assume that |θi,j − ψj| > 0.00000001 for all pairs of i and j.
Figure 1: Direction and angular radius of a telescope
The end of the input is indicated with a line containing a single zero.
输出格式
For each dataset, one line containing an integer meaning the number of stars observable through the telescope should be output. No other characters should be contained in the output. Note that stars that can be seen through more than one telescope should not be counted twice or more.
样例输入
3 100 0 500 -500.243 -200.1 -300.5 0 300 200 2 1 1 1 0.65 -1 0 0 1.57 3 1 0 0 0 1 0 0 0 1 4 1 -1 -1 0.9553 -1 1 -1 0.9554-1 -1 1 0.9553-1 1 -1 0.95543 1 0 0 0 1 0 0 0 1 4 1 -1 -1 0.9553-1 1 -1 0.9553-1 -1 1 0.9553-1 1 -1 0.95530
样例输出
210
#include<iostream>#include<cmath>#include<cstdio>using namespace std;double alfa(double x1,double y1,double z1,double x2,double y2,double z2) {double len1 = sqrt(x1*x1+y1*y1+z1*z1);double len2 = sqrt(x2*x2+y2*y2+z2*z2);double cos = (x1*x2+y1*y2+z1*z2)/len1/len2;return acos(cos);}int main() {int n;double sx[501],sy[501],sz[501],tx[51],ty[51],tz[51],ff[51],fg[501];while(scanf("%d",&n)&&n!=0) {for (int i=0; i<n; i++) {cin>>sx[i]>>sy[i]>>sz[i];fg[i]=0;}int m,count=0;cin>>m;for (int i=0; i<m; i++) {cin >>tx[i]>>ty[i]>>tz[i]>>ff[i];for(int j=0; j<n; j++) {if (ff[i] > alfa(tx[i],ty[i],tz[i],sx[j],sy[j],sz[j]) && fg[j]==0) {count++;fg[j]=1;}}}cout << count << endl;}return 0;}
- WOJ1271-How I Wonder What You Are
- poj 3130 How I Mathematician Wonder What You Are!
- POJ 3130 How I Mathematician Wonder What You Are!
- POJ 3130 How I Mathematician Wonder What You Are!
- poj 3130 How I Mathematician Wonder What You Are!
- POJ 3130 How I Mathematician Wonder What You Are!
- POJ 3130 How I Mathematician Wonder What You Are!
- POJ 3130 || How I Mathematician Wonder What You Are!
- uva 1373 - How I Wonder What You Are!(几何)
- poj 3130 How I Mathematician Wonder What You Are!
- POJ 3130 How I Mathematician Wonder What You Are! 笔记
- How I Mathematician Wonder What You Are! POJ
- poj How I Mathematician Wonder What You Are! 求多边形的核
- C - How I Mathematician Wonder What You Are!解题报告(来自网络)
- POJ 3335 Rotating Scoreboard & POJ 3130 How I Mathematician Wonder What You Are!
- poj 3130 How I Mathematician Wonder What You Are! - 求多边形有没有核 - 模版
- [poj 3130]How I Mathematician Wonder What You Are![半平面交][模板题]
- POJ 3130 How I Mathematician Wonder What You Are! /POJ 3335 Rotating Scoreboard 初涉半平面交
- 基于GPU加速的二维VTI介质二阶弹性波方程有限差分地震正演模拟
- 入侵其他院的作业......
- Machine learning学习笔记<三>
- 「云+未来」上海峰会,报名开启
- 1.numpy在数据处理上的速度优势
- WOJ1271-How I Wonder What You Are
- Elasticsearch之处理冲突。
- 牛客 题库 递归
- VS2015中配置SQLite3
- python3 安装 opencv3
- PCL点云曲面重建(1)
- vim 突然出现了 *** 已存在 然后怎么都无法返回去了 真是暴走!!!!
- vba excel学习系列(一)---开启vba的旅程
- httpclient学习笔记