几何【P2313】 [HNOI2005]汤姆的游戏
2018-09-29 14:42
369 查看
顾z
你没有发现两个字里的blog都不一样嘛 qwq
题目描述--->p2313 [HNOI]汤姆的游戏
分析
说不上是分析.
数据范围给出来,这题明显暴力啊emmm。
个人认为的坑点.
这题不要判精度,判精度会挂掉.
输入点之后,直接暴力枚举图形去判断其是否在这个图形中。
本来以为长方形给的都是 左上角和右下角.
结果这题给的是右上角和左下角.
搞得我取了半天\(max,min\).
(代码自己看着都有点恶心.
(还是我没有看清题的说 emmm.
注意计算点到圆心的距离的公式是
\(\sqrt{(x_i-x_j) \times (x_i-x_j) +(y_i-y_j)\times (y_i-y_j))}\)
------------------代码-------------------
#include<cstdio> #include<iostream> #include<cmath> #define R register using namespace std; int n,m; struct cod { char shape; double a,b,c,d,r; }s[508]; int main() { scanf("%d%d",&n,&m); for(R int i=1;i<=n;i++) { cin>>s[i].shape; switch(s[i].shape) { case 'r': { scanf("%lf%lf%lf%lf",&s[i].a,&s[i].b,&s[i].c,&s[i].d); break; } case 'c': { scanf("%lf%lf%lf",&s[i].a,&s[i].b,&s[i].r); break; } } } for(R int i=1;i<=m;i++) { R double x,y;R int cnt=0; scanf("%lf%lf",&x,&y); for(R int j=1;j<=n;j++) { if(s[j].shape=='c') { double dis=sqrt((s[j].a-x)*(s[j].a-x)+(s[j].b-y)*(s[j].b-y)); if(dis<s[j].r) cnt++; } else { if(x==s[j].a or x==s[j].c)continue; if(y==s[j].b or y==s[j].d)continue; if(x>min(s[j].a,s[j].c) and x<max(s[j].c,s[j].a)and y<max(s[j].b,s[j].d) and y>min(s[j].d,s[j].b)) cnt++; } } printf("%d\n",cnt); } }
相关文章推荐
- BZOJ 1199: [HNOI2005]汤姆的游戏 计算几何暴力
- BZOJ 1199 HNOI2005 汤姆的游戏 计算几何+暴力
- BZOJ 1199 HNOI 2005 汤姆的游戏 计算几何
- bzoj1199: [HNOI2005]汤姆的游戏
- [HNOI2005]汤姆的游戏
- 1199: [HNOI2005]汤姆的游戏 - BZOJ
- bzoj千题计划176:bzoj1199: [HNOI2005]汤姆的游戏
- 【BZOJ1199】【HNOI2005】汤姆的游戏 特技
- BZOJ 1199: [HNOI2005]汤姆的游戏
- 2017 计蒜之道 初赛 第一场 阿里的新游戏(找规律,几何,模拟)
- BZOJ1202 [HNOI2005]狡猾的商人 【并查集】
- 【带权并查集】BZOJ1202(HNOI2005)[狡猾的商人]题解
- 向量几何在游戏编程中的使用6
- 向量几何在游戏编程中的使用1
- 【HNOI2005】【BZOJ1202】狡猾的商人
- 向量几何在游戏编程中的使用3
- BZOJ 1206: [HNOI2005]虚拟内存
- 【BZOJ】 1610 [Usaco2008 Feb]Line连线游戏 计算几何
- 向量几何在游戏编程中的使用2
- 【BZOJ】1188 [HNOI2007]分裂游戏