地址:http://acm.uestc.edu.cn/#/problem/show/1337

思路:

郭大侠与阴阳家

Time Limit: 3000/4000MS (Java/Others)     Memory Limit: 262144/262144KB (Java/Others)
Submit Status

“污秽”是自异世界“祸野”现身,危害人世的怪物。而“阴阳师”长年以来则与污秽战斗至今。

国中生少年·郭大侠曾以成为能祓除所有污秽的最强阴阳师为目标,但自从遭遇了“雏月之悲剧”后,他便放弃成为阴阳师。

此时,在这样的郭大侠面前,出现了一名少女,这名来自京都的少女,同样以祓除污秽为理想,并展现了惊人的实力…

……

某日,郭大侠又一次遭遇污秽危害人世,郭大侠自然决意采取行动,去清除这些污秽!

阴阳师最厉害的武器是源自于他自身所携带的符咒去引燃空气中的精灵,从而对那些污秽造成伤害。

这些精灵只要坐标恰好能够构成一个平行四边形的话,就能释放出郭大侠的最强绝招——灭绝斩!

现在假设这个战场是一个二维的平面,那么究竟有多少种阵型能够使得郭大侠释放出这个灭绝斩呢?

我们认为,只要这个平行四边形的存在一个点的坐标不同的话,就认为这个阵型不同。

当然,平行四边形的面积肯定得为正数啦~

Input

第一行包含一个整数 nn (1 ≤ n ≤ 20001 ≤ n ≤ 2000) — 表示平面上精灵的数量

接下来的nn行,每一行包含两个整数(xi, yi)(0 ≤ xi, yi ≤ 1000000000)(xi, yi)(0 ≤ xi, yi ≤ 1000000000) — 表示精灵的坐标

Output

输出一个整数,表示答案

Sample input and output

Sample Input Sample Output
4
0 1
1 0
1 1
2 0
1
 思路:

可以组成平行四边形就是两线段的中点相等(不在同一直线)

所以对所有的点组成的所有线段求一次中点。(求中点前先去重复点,,可怕,因为有多点重合的情况

然后判断中点相等好了,直接扫一遍,不过因为有多点共线什么的,所以还需要记录两个附加信息,和x轴的交点与k+b的值(我用的是y=kx+b来表示直线的,因为有垂直的情况,所以保存k+b),,,,,,,这样搞一发就好了

代码:

 #include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <cstdlib>
#include <string>
#include <bitset>
#include <vector>
#define PI acos((double)-1)
#define E exp(double(1))
#define INF 100000000
#define eps 1e-9
using namespace std;
pair<int,int>a[];
int use[];
struct P
{
double x,y,vx,vy,dis;
}p[*]; bool cmp1(pair<int,int> tx,pair<int,int> ty)
{
if(tx.first == ty.first)
return tx.second<ty.second;
return tx.first <ty.first;
}
bool cmp2(P tx,P ty)
{
if(tx.x == ty.x)
return tx.y<ty.y;
return tx.x<ty.x;
}
int main(void)
{
int n,num,cnt=;
cin>>n;
memset(use,,sizeof(use));
for(int i=;i<=n;i++)
scanf("%d%d",&a[i].first,&a[i].second);
sort(a+,a+n+);
for(int i=;i<n;i++)
if(a[i].first==a[i+].first && a[i].second==a[i+].second)
use[i]=;
num=;
for(int i=;i<n;i++)
for(int j=i+;j<=n && !use[i];j++)
if(!use[j])
{
double k,b;
p[++num].x=(a[i].first+a[j].first)/2.0;//Öеã
p[num].y=(a[i].second+a[j].second)/2.0;
if(a[j].first-a[i].first==)
{
p[num].vy=;
p[num].vx=a[i].first;
p[num].dis=;
continue;
}
k=(a[j].second-a[i].second)*1.0/(a[j].first-a[i].first);
b=a[i].second-k*a[i].first;
p[num].vy=b;
p[num].vx=-b/k;
p[num].dis=k+b;
}
sort(p+,p+num+,cmp2);
for(int i=;i<num;i++)
for(int j=i+;abs(p[j].x- p[i].x)<eps && abs(p[i].y- p[j].y)<eps && j<=num;j++)
if(!( abs(p[i].vy-p[j].vy)<eps && abs(p[i].dis-p[j].dis)<eps))
cnt++;
printf("%d\n",cnt);
return ;
}

cdoj1337郭大侠与阴阳家的更多相关文章

  1. cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 最近 ...

  2. cdoj 1342 郭大侠与甲铁城 树状数组+离线

    郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  3. cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  4. CDOJ 1284 苦恼的郭大侠 map启发式合并

    苦恼的郭大侠 题目连接: http://acm.uestc.edu.cn/#/problem/show/1284 Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行 ...

  5. cdoj1342郭大侠与甲铁城

    地址:http://acm.uestc.edu.cn/#/problem/show/1342 题目: 郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     ...

  6. cdoj1339郭大侠与线上游戏

    地址:http://acm.uestc.edu.cn/#/problem/show/1339 题目: 郭大侠与线上游戏 Time Limit: 6000/2000MS (Java/Others)    ...

  7. cdoj1338郭大侠与英雄学院

    地址:http://acm.uestc.edu.cn/#/problem/show/1338 思路: 郭大侠与英雄学院 Time Limit: 6000/2000MS (Java/Others)    ...

  8. cdoj1334郭大侠与Rabi-Ribi

    地址:http://acm.uestc.edu.cn/#/problem/show/1334 题目: 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Other ...

  9. 郭大侠与Rabi-Ribi (优先队列)

    最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在地上跑来跑去,好萌好萌呀~ 这个游戏是这样玩的,郭大侠作为一个主角,拿着一个小锤子,他的 ...

随机推荐

  1. C++ STL标准模板库(stack)

    //stack的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stack> using name ...

  2. kaggle比赛之youtube视频分类示例

    1.训练模型:建bucket,建job,提交运行. BUCKET_NAME=gs://${USER}_yt8m_train_bucket_logisticmodel # (One Time) Crea ...

  3. 经典Mathematica函数大全

    转自:http://blog.renren.com/share/238323208/8426343822  Mathmatic 函数表  一.运算符及特殊符号 Line1; 执行Line,不显示结果  ...

  4. Visual Studio 2012/2010/2008 远程调试

    第一步:将你本地的账号密码设置成跟服务器一样,因为远程调试也是需要用户凭证的. 第二步:将vs工具里的Remote Debugger文件夹拷贝到目标机器.大致的目录应该是:D:\Program Fil ...

  5. websphere web.xml

    解决WAS更新web.xml文件不生效的问题(web_merged.xml是罪魁祸首)   问题原因分析 近日碰到更新web.xml文件到WAS服务器(WebSphere Application Se ...

  6. 三角矩阵怎么用MathType输入

    虽然现在已经是暑假,但还是有很多学霸们在炎炎夏日中努力奋战,连暑假都不放过.也许正在实验室里面做得昏天暗地,也许是正在跟数据努力奋战,也许还在办公室里面一点一点地码着论文.码论文的时候,不时地要敲着复 ...

  7. Chem 3D模型的参数值更改方法

    在化学绘图软件ChemOffice 15.1中有个专门用于绘制三维结构的组件,就是Chem 3D.通过这个组件用户可以绘制3D模型并可以通过这个组件来计算一些化学数据.在使用Chem 3D组件过程中, ...

  8. Python_selenium封装一个浏览器引擎类

    Python_selenium封装一个浏览器引擎类 现在我们在编写一个类,叫浏览器引擎类(此例为:启动浏览器),将文件名命名为browser.py,代码下面通过更改一个字符串的值,运用if语句判断和控 ...

  9. requestAnimationFrame 实现JS动画

    requestAnimationFrame会随着浏览器绘制窗口的频率来绘制动画以达到最好的用户体验 // let raf = (function(){ // return window.request ...

  10. JZOJ.5279【NOIP2017模拟8.15】香港记者

    Description