FZU 2148  Moon Game

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

 

Description

Fat brother and Maze are playing a kind of special (hentai) game in the clearly blue sky which we can just consider as a kind of two-dimensional plane. Then Fat brother starts to draw N starts in the sky which we can just consider each as a point. After he draws these stars, he starts to sing the famous song “The Moon Represents My Heart” to Maze.

You ask me how deeply I love you,

How much I love you?

My heart is true,

My love is true,

The moon represents my heart.

But as Fat brother is a little bit stay-adorable(呆萌), he just consider that the moon is a special kind of convex quadrilateral and starts to count the number of different convex quadrilateral in the sky. As this number is quiet large, he asks for your help.

Input

The first line of the date is an integer T, which is the number of the text cases.

Then T cases follow, each case contains an integer N describe the number of the points.

Then N lines follow, Each line contains two integers describe the coordinate of the point, you can assume that no two points lie in a same coordinate and no three points lie in a same line. The coordinate of the point is in the range[-10086,10086].

1 <= T <=100, 1 <= N <= 30

Output

For each case, output the case number first, and then output the number of different convex quadrilateral in the sky. Two convex quadrilaterals are considered different if they lie in the different position in the sky.

Sample Input

2
4
0 0
100 0
0 100
100 100
4
0 0
100 0
0 100
10 10

Sample Output

Case 1: 1
Case 2: 0 /*/
这个题目也是比赛的题目,虽然没这么难,但是海伦公式的优化忘记了,一开始写了一大坨的求根,除法,再加4个for嵌套,TLE没得说。。 赛后看了下海伦公式的优化,简直了! 题意:有N个点,找出其中四个点能够围城凸四边形的个数。 思路,根据点在三角形内和三角形外的性质来判断。 如果一个点在三角形内,改点和三条边围的三角型总面积等于三角形面积,否则大于三角形面积。 思维图

AC代码:

/*/


#include"algorithm"
#include"iostream"
#include"cstring"
#include"vector"
#include"string"
#include"cstdio"
#include"queue"
#include"cmath"
using namespace std;
#define memset(x,y) memset(x,y,sizeof(x))
#define memcpy(x,y) memcpy(x,y,sizeof(x))
typedef long long LL; const int MX = 1e5+5; struct Node {
int x,y;
} nd[200]; int area(int x0,int y0,int x1,int y1,int x2,int y2 ) {
return abs(x0*y1+x1*y2+x2*y0-x2*y1-x1*y0-x0*y2);
} bool check(int i,int j,int k,int l) {
int s[4];
s[0]=area(nd[i].x,nd[i].y,nd[j].x,nd[j].y,nd[k].x,nd[k].y);
s[1]=area(nd[i].x,nd[i].y,nd[j].x,nd[j].y,nd[l].x,nd[l].y);
s[2]=area(nd[l].x,nd[l].y,nd[j].x,nd[j].y,nd[k].x,nd[k].y);
s[3]=area(nd[i].x,nd[i].y,nd[l].x,nd[l].y,nd[k].x,nd[k].y);
sort(s,s+4);
if(s[3]!=s[2]+s[1]+s[0])return 1;
else return 0;
} int main() {
int T,n,num;
scanf("%d",&T);
for(int qq=1; qq<=T; qq++) {
scanf("%d",&n);
num=0;
for(int i=0; i<n; i++)
scanf("%d%d",&nd[i].x,&nd[i].y);
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 l=k+1; l<n; l++) {
// cout<<"AAA "<<num<<endl;
if(check(i,j,k,l))num++;
// cout<<"BBB "<<num<<endl;
}
}
}
}
printf("Case %d: %d\n",qq,num);
}
return 0;
}

  

ACM: FZU 2148 Moon Game - 海伦公式的更多相关文章

  1. FZU 2148 Moon Game

    Moon Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  2. FZU 2148 moon game (计算几何判断凸包)

    Moon Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  3. FZU 2148 Moon Game --判凹包

    题意:给一些点,问这些点能够构成多少个凸四边形 做法: 1.直接判凸包 2.逆向思维,判凹包,不是凹包就是凸包了 怎样的四边形才是凹四边形呢?凹四边形总有一点在三个顶点的内部,假如顶点为A,B,C,D ...

  4. fzu Problem 2148 Moon Game(几何 凸四多边形 叉积)

    题目:http://acm.fzu.edu.cn/problem.php?pid=2148 题意:给出n个点,判断可以组成多少个凸四边形. 思路: 因为n很小,所以直接暴力,判断是否为凸四边形的方法是 ...

  5. FZOJ Problem 2148 Moon Game

                                                                                                  Proble ...

  6. FZU Problem 2148 Moon Game (判断凸四边形)

    题目链接 题意 : 给你n个点,判断能形成多少个凸四边形. 思路 :如果形成凹四边形的话,说明一个点在另外三个点连成的三角形内部,这样,只要判断这个内部的点与另外三个点中每两个点相连组成的三个三角形的 ...

  7. ACM: FZU 2105 Digits Count - 位运算的线段树【黑科技福利】

     FZU 2105  Digits Count Time Limit:10000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  8. ACM: FZU 2107 Hua Rong Dao - DFS - 暴力

    FZU 2107 Hua Rong Dao Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  9. ACM: FZU 2112 Tickets - 欧拉回路 - 并查集

     FZU 2112 Tickets Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u P ...

随机推荐

  1. Linux下多窗口分屏式终端--Terminator

    很不错的分屏插件终端:https://pkgs.org/centos-6/repoforge-i386/terminator-0.95-3.el6.rf.noarch.rpm.html

  2. My97DatePicker日期范围限制

    1.动态时间范围限制: 可以通过系统给出的动态变量,如%y(当前年),%M(当前月)等来限制日期范围,还可以通过{}进行表达式运算,如:{%d+1}:表示明天. 格式 说明 %y  当前年 %M  当 ...

  3. 菜鸟学Linux命令:lsof命令 查找指定用户、进程、端口打开的文件

    lsof,list open files, 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件. 命令格式:ls ...

  4. Android 下拉刷新

    以前旧版用的是开源的PullToRefresh第三方库,该库现在已经不再维护了: chrisbanes/Android-PullToRefreshhttps://github.com/chrisban ...

  5. Python3 基本数据类型注意事项

    Python3 基本数据类型 教程转自菜鸟教程:http://www.runoob.com/python3/python3-data-type.html Python中的变量不需要声明.每个变量在使用 ...

  6. Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA/(树链剖分+数据结构) + MST

    E. Minimum spanning tree for each edge   Connected undirected weighted graph without self-loops and ...

  7. UVA232字符串处理

    #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> ...

  8. loadrunner选择执行哪个Action

    深圳湖北籍软件测试群 275212937

  9. lr常用

    一.检查点的手动添加 2.关联手工添加:

  10. 移动Web开发规范

    1.字体设置 使用无衬线字体 body { font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif; } 2.设 ...