bzoj 2338: [HNOI2011]数矩形
2014-10-22 21:42
423 查看
Description
计算几何。枚举边,长度和中点都相同即可构成矩形,差积计算面积即可
#include<cstdio> #include<algorithm> using namespace std; int p; struct point { long long x,y; }a[1501]; struct line { long long x1,y1,x2,y2; long long xx,yy; long long x,y; long long len; }l[2550000/2+1]; inline bool cmp(line x,line y) { if(x.len<y.len) return true; if(x.len==y.len&&x.x<y.x) return true; if(x.len==y.len&&x.x==y.x&&x.y<y.y) return true; return false; } inline long long xabs(long long x) { if(x<0) x=-x; return x; } inline long long max(long long x,long long y) { if(x>y) return x; return y; } int main() { int n; scanf("%d",&n); int i,j; for(i=1;i<=n;i++) scanf("%lld%lld",&a[i].x,&a[i].y); for(i=1;i<=n-1;i++) { for(j=i+1;j<=n;j++) { p++; // if(a[i].x<a[j].x) // { l[p].x1=a[i].x; l[p].y1=a[i].y; l[p].x2=a[j].x; l[p].y2=a[j].y; // } /* else { l[p].x1=a[j].x; l[p].y1=a[j].y; l[p].x2=a[i].x; l[p].y2=a[i].y; }*/ l[p].xx=l[p].x2-l[p].x1; l[p].yy=l[p].y2-l[p].y1; l[p].x=a[i].x+a[j].x; l[p].y=a[i].y+a[j].y; l[p].len=(a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y); } } sort(l+1,l+1+p,cmp); long long ans=0; for(i=2;i<=p;i++) { j=i-1; long long t; while(l[i].len==l[j].len&&l[i].x==l[j].x&&l[i].y==l[j].y&&j>0) { t=(l[i].xx*l[j].yy)-(l[j].xx*l[i].yy); ans=max(ans,xabs(t)); j--; } } printf("%lld\n",ans/(long long)2); return 0; }
相关文章推荐
- [BZOJ2338][HNOI2011]数矩形
- 【BZOJ2338】【HNOI2011】数矩形 [计算几何]
- BZOJ 2338 HNOI 2011 数矩形 计算几何
- 【bzoj2338】[HNOI2011]数矩形
- [BZOJ 2338][HNOI 2011]数矩形(计算几何)
- 【BZOJ2338】[HNOI2011]数矩形 几何
- bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
- BZOJ2338 [HNOI2011]数矩形
- [BZOJ2338][HNOI2011]数矩形(计算几何)
- [BZOJ]2338: [HNOI2011]数矩形 叉积
- [BZOJ2338][HNOI2011]数矩形(计算几何)
- [暴力 乱搞] BZOJ 2338 [HNOI2011]数矩形
- bzoj2338[HNOI2011]数矩形 计算几何
- bzoj2338: [HNOI2011]数矩形
- 2338: [HNOI2011]数矩形 - BZOJ
- bzoj 2338: [HNOI2011]数矩形 (计算几何)
- 【计算几何】bzoj2338 [HNOI2011]数矩形
- 【bzoj2338】【HNOI2011】【计算几何】【数矩形】
- 【bzoj2338】[HNOI2011]数矩形 计算几何
- [BZOJ2338][HNOI2011]数矩形