CodeForces 660D Number of Parallelograms
来源:互联网 发布:网络销售月收入是多少 编辑:程序博客网 时间:2024/06/05 17:57
题意:给你n个点 求能组成平行四边形的个数
就是模拟 求四个点的横坐标之差和纵坐标之差
两两相等就能构成平行四边形
也可以用向量来求,不过要用到STL map pair 什么的
#include<stdio.h>#include<algorithm>struct aa{ int x, y; int a,b;}s[2000010],cc[2001];int cmp(aa xx,aa yy){ return xx.x<yy.x||(xx.x==yy.x&&xx.y<yy.y);//排序便于求相等}int cnp(aa x,aa y){ return x.a<y.a||(x.a==y.a&&x.b<y.b);//点的坐标排序}using namespace std;int main(){ int n; int a[2001],b[2001]; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&cc[i].a,&cc[i].b); } sort(cc,cc+n,cnp); int k=0; for(int i=0;i<n-1;i++) { for(int j=i+1;j<n;j++) { s[k].x=cc[j].a-cc[i].a; s[k++].y=cc[j].b-cc[i].b; } } sort(s,s+k,cmp); int pos=0,m=0,sum=0; for(int i=1;i<k;i++) { if(s[i].x!=s[i-1].x||s[i].y!=s[i-1].y) { m=i-pos; pos=i; sum+=(m*(m-1))/2;//两两组合的个数 } } printf("%d\n",sum/2);//要四条边两两互相平行相等}
1 0
- codeforces 660D. Number of Parallelograms
- CodeForces 660D Number of Parallelograms
- Codeforces 660D Number of Parallelograms
- Codeforces 660D Number of Parallelograms 【思维】
- CodeForces 660D Number of Parallelograms
- CodeForces 660D Number of Parallelograms
- CodeForces 660D. Number of Parallelograms【模拟】
- codeforces 660D - Number of Parallelograms
- CodeForces 660D Number of Parallelograms
- CodeForces 660D Number of Parallelograms(水题)
- Codeforces 660D Number of Parallelograms【平行四边形个数】
- Number of Parallelograms CodeForces 660D 思维题
- CodeForces 660D Number of Parallelograms [想法题]
- D. Number of Parallelograms
- D. Number of Parallelograms
- D. Number of Parallelograms
- Number of Parallelograms CodeForces
- Educational Codeforces Round 11-D. Number of Parallelograms
- 跑马灯效果
- 堆和栈的区别
- Ejabberd源码学习——端口监听及报文转发流程
- 4.JSON:JavaScript对象表示法
- JavaScript undefined与null的区别
- CodeForces 660D Number of Parallelograms
- Luajit笔记---关于如何FFI与C++代码交互
- iOS 9.3.1真机报错"could not find developer disk image"
- HTTP POST请求报文格式分析与Java实现文件上传
- 欢迎使用CSDN-markdown编辑器
- spring依赖注入使用小记
- 【机器学习详解】SVM解回归问题
- Java设计模式中单例模式(Design Pattern):懒汉模式和饿汉模式
- Javascript 严格模式详解