FOJ 2148(求凸四边形数量)
来源:互联网 发布:软件开发人员外派 编辑:程序博客网 时间:2024/05/16 15:39
题意:给n个点,求图中凸四边形的数量。
解法:n<=30,就暴力吧。n^4 ^_^。如果四个点构成一个凸四边形,那么任意一个点和其他三个点组成的三个三角形面积一定大于其余三个点组成的三角形面积大。
代码:
#include <iostream>#include <stdio.h>using namespace std;struct point{ int x,y;} points[40];int abs(int k){if(k<0) return -k;return k;}int mult(point a,point b,point c){ a.x-=c.x; a.y-=c.y; b.x-=c.x; b.y-=c.y; return abs(a.x*b.y-a.y*b.x);}bool OK(point a,point b,point c,point d){ if(mult(a,b,c)+mult(a,c,d)+mult(a,b,d)<=mult(b,c,d)) return false; if(mult(b,a,c)+mult(b,c,d)+mult(b,a,d)<=mult(a,c,d)) return false; if(mult(c,a,b)+mult(c,b,d)+mult(c,a,d)<=mult(a,b,d)) return false; if(mult(d,a,b)+mult(d,b,c)+mult(d,a,c)<=mult(a,b,c)) return false; return true;}int n;int main(){ int t;cin>>t;int an=1; while(t--) { cin>>n; for(int i=0;i<n;i++) scanf("%d%d",&points[i].x,&points[i].y); int ans=0; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) for(int k=j+1;k<n;k++) for(int h=k+1;h<n;h++) { if(OK(points[i],points[j],points[k],points[h])) ans++; } printf("Case %d: %d\n",an,ans);an++; } return 0;}
0 0
- FOJ 2148(求凸四边形数量)
- foj 2148 Moon Game 判断n个点有几个凸四边形 + 枚举4个点 + 判断点在三角形外
- hdu4386(求四边形最大面积)
- FZU-2148 求n个点构成的凸四边形的个数
- 利用坐标筛选四边形(凸四边形,边不交叉)
- moon game(凸四边形)
- FZU 2148 Moon Game(判断凸四边形的个数)
- poj Fishnet 1408 (求最大四边形面积) 好题
- Moon Game (凸四边形个数,数学题)
- 计算当前四边形是否为凸四边形
- FZU 2148 (判凸四边形 || 暴力 + 快速排斥实验 + 跨立实验)
- HDU 3694 Fermat Point in Quadrangle (费马定理求四边形的费马点)
- hdu 5365 Run(BC 50 B题)(求四边形的个数)
- hdu 3506 Monkey Party (区间dp 求环形石子合并+四边形不等式优化)
- HDU2478(Slides)求四边形矩阵交
- HDU4386-海伦公式求四边形面积
- URAL 1963 Kite 四边形求对称轴数
- 已知四边形四个顶点坐标,求面积
- 随机模拟的基本思想和常用采样方法(sampling)
- hdu 2686 Matrix 最大费用最大流
- 模版方法模式(Template Method)
- 使用Maven构建Java工程(Building Java Projects with Maven)
- @Override错误
- FOJ 2148(求凸四边形数量)
- 方法中的参数的问题
- 【设计模式基础】行为模式 - 3 - 职责链(Chain of responsibility)
- git
- uafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj
- js修改原型的属性
- java中数组的常见操作
- 值类型 引用类型在存储时的区别
- 学习总结-环境配置,数据类型,数组