地址: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. Android开发 获取当前activity的屏幕截图(转载)

    首先通过下面的函数获取Bitmap格式的屏幕截图: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 pu ...

  2. H.264 Profile

    提到High Profile H.264解码许多人并不了解,那么到底什么是High Profile H.264解码?其应用效果又是如何呢?  作为行业标准,H.264编码体系定义了4种不同的Profi ...

  3. android webview css z-index属性无效

    在做android的web页面嵌入的时候,当使用css的z-index设置重叠div失败: 查询google说设置 -webkit-transform:translateZ(0) canvas{ -w ...

  4. SPAF模板

    #include <iostream> #include <cstring> #include <queue> #include <cstdio> #d ...

  5. Java面试题全集(上)(中)(下) (转)+自己总结

    Java面试题 自己总总结 https://www.cnblogs.com/songanwei/p/9366427.html Java面试题全集(上) https://blog.csdn.net/ja ...

  6. 在 App Store 三年學到的 13 件事(下)

    博文转载至 http://blog.csdn.net/iunion/article/details/18959801     Steven Shen,曾經寫過一本書,也翻過一本書,開發 iOS app ...

  7. 【BZOJ2055】80人环游世界 有上下界费用流

    [BZOJ2055]80人环游世界 Description     想必大家都看过成龙大哥的<80天环游世界>,里面的紧张刺激的打斗场面一定给你留下了深刻的印象.现在就有这么     一个 ...

  8. Kubernetes之kubectl常用命令

    最近项目有用到Kubernetes作集群配置,所以学习下相关命令,记录下以备下次使用... kubectl help 显示具体的用法 kubectl controls the Kubernetes c ...

  9. Vue入门之旅:一报错 Unknown ... make sure to provide the "name" option及error compiling template

    报错一: Unknown custom element: <custom-select> - did you register the component correctly? For r ...

  10. java倒序输出List

    先贴代码 package com.tsubasa.collection; import java.util.ArrayList; import java.util.Arrays; import jav ...