bzoj 4814: [Cqoi2017]小Q的草稿【计算几何】
2018-03-05 21:54
302 查看
//先打个50暴力,10min50分简直美滋滋~ #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=5005; const double eps=1e-8; int n,t,m,ans; struct dian { double x,y; dian(double X=0,double Y=0) { x=X,y=Y; } dian operator + (const dian &a) const { return dian(x+a.x,y+a.y); } dian operator - (const dian &a) const { return dian(x-a.x,y-a.y); } }a,b,c,p ; struct bian { dian s,t; bian(dian S=dian(),dian T=dian()) { s=S,t=T; } }l ; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') { if(p=='-') f=-1; p=getchar(); } while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r*f; } int sgn(double x) { return x<-eps?-1:x>eps; } double cj(dian a,dian b) { return a.x*b.y-a.y*b.x; } bool lc(dian a,dian b,dian c,dian d) { return sgn(cj(c-a,b-a)*cj(b-a,d-a))>=0; } bool jiao(dian a,dian b,dian c,dian d) { return lc(a,b,c,d)&&lc(c,d,a,b); } bool ok(dian a,dian b) { for(int i=1;i<=m;i++) if(jiao(a,b,l[i].s,l[i].t)) return 0; return 1; } int main() { n=read(),t=read(); for(int i=1;i<=n;i++) p[i].x=read(),p[i].y=read(); for(int i=1;i<=t;i++) { a.x=read(),a.y=read(),b.x=read(),b.y=read(),c.x=read(),c.y=read(); l[++m]=bian(a,b),l[++m]=bian(b,c),l[++m]=bian(c,a); } for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) if(ok(p[i],p[j])) ans++; printf("%d\n",ans); return 0; }
相关文章推荐
- [几何] BZOJ 4814 [Cqoi2017]小Q的草稿
- bzoj 4814 [Cqoi2017]小Q的草稿
- 4814: [Cqoi2017]小Q的草稿
- bzoj 4813 [Cqoi2017]小Q的棋盘(思维)
- [bzoj4815]: [Cqoi2017]小Q的表格
- BZOJ 4815 [Cqoi2017]小Q的表格 ——欧拉函数
- bzoj 1845: [Cqoi2005] 三角形面积并(计算几何)
- bzoj 4813: [Cqoi2017]小Q的棋盘
- bzoj4813 [Cqoi2017]小Q的棋盘 树上DP
- bzoj4815 [Cqoi2017]小Q的表格
- bzoj 4815: [Cqoi2017]小Q的表格
- bzoj 4815: [Cqoi2017]小Q的表格【欧拉函数+分块】
- bzoj4815 [Cqoi2017]小Q的表格
- bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】
- 【BZOJ4815】 [Cqoi2017]小Q的表格
- BZOJ 4813: [Cqoi2017]小Q的棋盘 (树形dp)
- [BZOJ4815][CQOI2017]小Q的表格(莫比乌斯反演)
- 【bzoj4813】[Cqoi2017]小Q的棋盘 树上dfs+贪心
- bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]
- [扫描线 计算几何] BZOJ 1845 [Cqoi2005] 三角形面积并