poj 1971 Parallelogram Counting
2011-04-07 19:09
381 查看
这题本想用hash,从MLE变到 RE,最后停留在 TLE,关键值就是中点坐标的和,用链表来解决关键值相同的情况(碰撞);最后猥琐的排序过了。
#include<iostream> using namespace std; #include<cstdlib> struct Point { int x,y; }; Point p[1005],mp[500005]; int cmp(const void *a,const void *b) { Point *p1=(Point *)a,*p2=(Point *)b; if(p1->x==p2->x) return p1->y - p2->y; else return p1->x - p2->x; } int main() { int ca,n,i,j,m,c,t; scanf("%d",&ca); while(ca--) { m=0; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y); for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) { mp[m].x=p[i].x+p[j].x; mp[m].y=p[i].y+p[j].y; m++; } qsort(mp,m,sizeof(mp[0]),cmp); j=1,c=1,t=0; while(j<m) { if(mp[j].x==mp[j-1].x&&mp[j].y==mp[j-1].y) c++; else { t+=c*(c-1)/2; c=1; } j++; } t+=c*(c-1)/2; printf("%d/n",t); } }
相关文章推荐
- poj 1971 Parallelogram Counting
- POJ 1971 Parallelogram Counting
- POJ 1971 Parallelogram Counting
- POJ - 1971 - Parallelogram Counting
- LightOJ 1058 & Poj 1971 Parallelogram Counting
- poj 1971 Parallelogram Counting
- poj 1971 Parallelogram Counting
- POJ 1971 Parallelogram Counting
- POJ 1972 Parallelogram Counting
- POJ 1971 Parallelogram Counting (Hash)
- Parallelogram Counting
- poj 1971 Parallelogram Counting 排序 + 计数
- Ant Counting POJ - 3046 多重组合数
- Lake Counting POJ - 2386
- DFS:Lake Counting POJ 2386
- POJ 1971-Parallelogram Counting,暴力1063ms!
- POJ 2282 The Counting Problem
- poj 3046 Ant Counting
- POJ 1971 Parallelogram Counting
- Ant Counting POJ - 3046 多重组合数