poj 1687 Buggy Sat 简单计算几何

暑期集训出的第一道一血 感觉自己萌萌哒……

这道题本身并没有坑点 仅仅是翻译巨坑……

解大腿在做B 安学长在做E 我闲着也没事 就一个词一个词翻译F……

最后感觉……

题干大多数都看不懂……

也都没啥用……

大概呢……

就是给你n个点……

m条回路……

问你哪条回路是最外面的……

总之最后就是让你求哪个回路组成的图形面积最大……

考点就是多边形面积公式……

怕有误差就没加/2……

好像加了也能过吧……

WA了两次 一次是选错点了 一次是第一个点和最后一个点顺序反了……

 1 #include<stdio.h>
 2 #include<string.h>
 3 struct point{
 4     int x,y;
 5 }p[1005];
 6 int area(point a,point b){
 7     return ((a.x*b.y)-(b.x*a.y));
 8 }
 9 int main(){
10     int T;
11     scanf("%d",&T);
12     while(T--){
13         int n;
14         scanf("%d",&n);
15         for(int i=1;i<=n;i++)
16             scanf("%d%d",&p[i].x,&p[i].y);
17         int m,q;
18         int s[1005];
19         int maxn=-1;
20         int flag;
21         scanf("%d",&m);
22         for(int i=1;i<=m;i++){
23             scanf("%d",&q);
24             int now=0;
25             scanf("%d",&s[0]);
26             for(int j=1;j<q;j++){
27                 scanf("%d",&s[j]);
28                 now+=area(p[s[j-1]],p[s[j]]);
29             }
30             now+=area(p[s[q-1]],p[s[0]]);
31             if(now>maxn){
32                 maxn=now;
33                 flag=i;
34             }
35         }
36         printf("%d
",flag);
37     }
38     return 0;
39 }
原文地址:https://www.cnblogs.com/general10/p/5692444.html