POJ3304
来源:互联网 发布:英语软件哪个好 编辑:程序博客网 时间:2024/04/30 06:01
似乎NOI2017考了计算几何。
计算几何这么不OI向的东西,竟然在CCF系列赛事的NOI中考了,感觉有必要学一学啊。
这题本来倒没什么,只是我一开始枚举两个点,直接判下标是否相等。但按照网上各种题解,应该判两个点是否相等。
这可能是做计算几何遇到的第一个坑?
#include<cstdio>#include<cmath>const int N=105;typedef double db;const double eps=1e-8;int dcmp(double x){ if(x>eps)return 1; if(x<-eps)return -1; return 0;}struct poi{ double x,y; poi(double _x=0,double _y=0):x(_x),y(_y){} bool operator==(const poi&rhs)const{ return fabs(x-rhs.x)<eps && fabs(y-rhs.y)<eps; } bool operator!=(const poi&rhs){ return !(*this==rhs); } friend double dis(poi a,poi b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } inline void in(){ scanf("%lf%lf",&x,&y); }};struct vec{ double x,y; vec(double _x=0,double _y=0):x(_x),y(_y){} bool operator==(const vec&rhs)const{ return fabs(x-rhs.x)<eps && fabs(y-rhs.y)<eps; } vec operator+(const vec&rhs){ return vec(x+rhs.x,y+rhs.y); } vec operator*(const double p){ return vec(x*p,y*p); } vec operator/(const double p){ return vec(x/p,y/p); } double len(){ return dis(poi(),poi(x,y)); } friend double dot(vec a,vec b){ return a.x*b.x+a.y*b.y; } friend double cross(vec a,vec b){ return a.x*b.y-a.y*b.x; } double angle(){ return atan2(y,x); } friend double angle(vec a,vec b){ return acos(dot(a,b)/a.len()/b.len()); } vec rorate(double rad){ double u=cos(rad),v=sin(rad); return vec(x*u-y*v,x*v+y*u); } //friend };poi operator+(poi a,vec b){ return poi(a.x+b.x,a.y+b.y);}vec operator-(poi a,poi b ){ return vec(a.x-b.x,a.y-b.y);}poi a[N],b[N],c[N<<1];vec u;int n,i,j,k,xb,T;int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); xb=0; for(i=1;i<=n;++i)a[i].in(),b[i].in(),c[++xb]=a[i],c[++xb]=b[i]; for(i=1;i<=xb;++i){ for(j=1;j<=xb;++j)if(c[i]!=c[j]){ u=c[i]-c[j]; for(k=1;k<=n;++k)if(dcmp(cross(u,a[k]-c[j]))*dcmp(cross(u,b[k]-c[j]))==1)break; if(k>n)break; } if(j<=xb)break; } puts(i<=xb?"Yes!":"No!"); } return 0;}
阅读全文
0 0
- poj3304
- POJ3304
- poj3304
- poj3304
- poj3304
- poj3304
- POJ3304
- POJ3304 Segments
- poj3304 - Segments
- POJ3304-Segments
- poj3304 Segments
- POJ3304--Segments
- Poj3304 Segments
- poj3304 Segments
- POJ3304 Segments
- POJ3304 Segments
- [poj3304]:Segments
- 【计算几何】 poj3304 Segments
- 脾胃虚寒 后天失养 伤及肾阳 记录一下调养之路
- 抽象类与纯虚函数
- 使用ajax跨域调用springboot框架的api传输文件
- C和指针第二章笔记
- 定时提醒小程序
- POJ3304
- Knights of Ni (bfs)
- 图像识别的前期工作——使用pillow进行图像处理
- 用CSS实现超出的文字显示省略号
- 深入分析Spring 与 Spring MVC容器
- 二分法 Binary Search
- Caffe配置注意事项
- 华为荣耀路由Pro 上网慢解决方法
- java中的反射机制