FZU 2148 Moon Game --判凹包
题意:给一些点,问这些点能够构成多少个凸四边形
做法:
1.直接判凸包
2.逆向思维,判凹包,不是凹包就是凸包了
怎样的四边形才是凹四边形呢?凹四边形总有一点在三个顶点的内部,假如顶点为A,B,C,D,则构成四个三角形:ABC,ACD,ABD,BCD,假如某一个三角形(最外的三个顶点)的面积等于另三个三角形面积之和,则是凹四边形。
然后做四个for循环,枚举即可,因为N最多才30.
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define N 1007
#define M 33 struct Point
{
double x,y;
}p[]; double calc_area(Point a,Point b,Point c) //叉积求三角形面积
{
return fabs(a.x*b.y + c.x*a.y + b.x*c.y - c.x*b.y - a.x*c.y - b.x*a.y)*0.5;
} int main()
{
int t,i,n;
int j,k,h;
int cs = ;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=;i<n;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
int cnt = ;
for(i=;i<n-;i++)
{
for(j=i+;j<n-;j++)
{
for(k=j+;k<n-;k++)
{
for(h=k+;h<n;h++)
{
double Area1 = calc_area(p[i],p[j],p[k]);
double Area2 = calc_area(p[i],p[j],p[h]);
double Area3 = calc_area(p[j],p[k],p[h]);
double Area4 = calc_area(p[i],p[k],p[h]);
//printf("%lf %lf %lf %lf\n",Area1,Area2,Area3,Area4);
if(fabs(Area1-Area2-Area3-Area4) < eps)
continue;
if(fabs(Area2-Area3-Area4-Area1) < eps)
continue;
if(fabs(Area3-Area1-Area2-Area4) < eps)
continue;
if(fabs(Area4-Area1-Area2-Area3) < eps)
continue;
cnt++;
}
}
}
}
printf("Case %d: %d\n",cs++,cnt);
}
return ;
}
FZU 2148 Moon Game --判凹包的更多相关文章
- ACM: FZU 2148 Moon Game - 海伦公式
FZU 2148 Moon Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- FZU 2148 Moon Game
Moon Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- FZU 2148 moon game (计算几何判断凸包)
Moon Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- FZOJ Problem 2148 Moon Game
Proble ...
- fzu Problem 2148 Moon Game(几何 凸四多边形 叉积)
题目:http://acm.fzu.edu.cn/problem.php?pid=2148 题意:给出n个点,判断可以组成多少个凸四边形. 思路: 因为n很小,所以直接暴力,判断是否为凸四边形的方法是 ...
- FZU Problem 2148 Moon Game (判断凸四边形)
题目链接 题意 : 给你n个点,判断能形成多少个凸四边形. 思路 :如果形成凹四边形的话,说明一个点在另外三个点连成的三角形内部,这样,只要判断这个内部的点与另外三个点中每两个点相连组成的三个三角形的 ...
- 暴力(判凸四边形) FZOJ 2148 Moon Game
题目传送门 题意:给了n个点的坐标,问能有几个凸四边形 分析:数据规模小,直接暴力枚举,每次四个点判断是否会是凹四边形,条件是有一个点在另外三个点的内部,那么问题转换成判断一个点d是否在三角形abc内 ...
- (求凹包) Bicycle Race (CF 659D) 简单题
http://codeforces.com/contest/659/problem/D Maria participates in a bicycle race. The speedway t ...
- Moon Game (凸四边形个数,数学题)
Problem 2148 Moon Game Accept: 24 Submit: 61 Time Limit: 1000 mSec Memory Limit : 32768 KB Pro ...
随机推荐
- Java8 如何进行stream reduce,collection操作
Java8 如何进行stream reduce,collection操作 2014-07-16 16:42 佚名 oschina 字号:T | T 在java8 JDK包含许多聚合操作(如平均值,总和 ...
- ASP.NET Web API通过ActionFilter来实现缓存
using System; using System.Collections.Generic; using System.Linq; using System.Threading; using Sys ...
- www.97top10.com--做最好的技术交流网站
www.97top10.com--做最好的技术交流网站
- Java内存泄露的原因
Java内存泄露的原因 1.静态集合类像HashMap.Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放,因为他们也将一直被Vector ...
- H5实现的可自定义贪吃蛇游戏
原创游戏,使用lufylegend.js开发 用canvas实现的贪吃蛇游戏,与一般的贪吃蛇游戏不同,图片经过美工设计,代码设计支持扩展和自定义. 游戏元素丰富,包括障碍物(仙人掌),金币(奖励),苹 ...
- SharePoint 更新文档库文档标题(Title)字段
前言:记录下写代码中遇到的小问题,帮同事写一个批量更新文档库标题字段的小程序,本来以为就Update一下就可以了,10分钟可以搞定.结果10分钟过去了,代码写好了,执行起来不报错,调试也没问题,只是要 ...
- https和http
今天登网站的时候用https登的,没登上去用http找到网站了,于是就去百度了下他俩的区别简单的画了俩图.
- SAP ST05数据跟踪使用
有时我们想知道SAP操作,对数据库中的那些表进行的增删查改. 可以使用ST05跟踪SQL语句. ST05功能界面如下: 1---激活跟踪 2---结束跟踪 3---显示跟踪结果. 如果想跟踪SQL语句 ...
- 【转】深入浅出Android Support Annotation
[转自]http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0427/2797.html http://www.flysnow.org/201 ...
- C99标准的新特性
C语言标准的发展 C语言的发展历史大致上分为4个阶段:Old Style C.C89.C99和C11. C89是最早的C语言规范,于1989年提出,1990年先由ANSI(美国国家标准委员会,Amer ...