题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1687 题意简述:根据给定的点的多边形,求一个多边形包含了其他所有多边形。 解题思路:面积最大的那个多边形即为所求,直接上差积。 代码: #include<stdio.h> using namespace std; const int Max=55; int main() { int Case; int x[Max],y[Max]; int p[Max]; scanf("%d",&Case); while(Case--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]); int m; int num; int area; int M=-999999; scanf("%d",&m); for(int i=1;i<=m;i++) { area=0; int k; scanf("%d",&k); for(int j=1;j<=k;j++) scanf("%d",&p[j]); p[0]=p[k],p[k+1]=p[1]; for(int j=1;j<=k;j++) area+=x[p[j]]*(y[p[j-1]]-y[p[j+1]]); if(area<0) area=-area; if(M<area) { M=area; num=i; } } printf("%d/n",num); } return 0; }