Time Limit: 10000ms
Memory Limit: 262154KB

64-bit integer IO format: %lld      Java class name: Main

木衫同学和凌小小都是军队的指挥官,他们共同管理着一队哨兵,每个哨兵都有一个位置(x,y)。但是木衫同学和凌小小计算距离的方法不一样,木衫同学计算第i个人和第j个人的距离利用以下公式 |xi - xj| + |yi - yj|,而凌小小计算时利用以下公式sqrt( (xi-xj)^2+(yi-yj)^2 )。现在问有多少组哨兵,他们之间的距离运用两种公式计算出来的结果是一样的。

Input

第一行输入一个整数T,代表有T组数据
每组数据第一行输入n(1 ≤ n ≤ 200000),代表哨兵的个数。
下面的n行,每行有两个整数,代表当前哨兵的坐标,(|xi|, |yi| ≤ 10^9)。

Output

每组数据输出一行,这一行只有一个整数,即符合条件的哨兵的组数。

Sample Input

2
3
1 1
7 5
1 5
6
0 0
0 1
0 2
-1 1
0 1
1 1

Sample Output

2
11
单纯暴力当然是要超时的……其实满足|xi - xj| + |yi - yj| = sqrt( (xi-xj)^2+(yi-yj)^2 )的两个点,只能是在同一条水平线或者同一条竖直线上

所以可以把不用计算两个距离,而是通过判断是否在同一条水平线或者同一条竖直线上来判断是否满足|xi - xj| + |yi - yj| = sqrt( (xi-xj)^2+(yi-yj)^2 )
 #include<cstdio>
#include<cmath>
#include<cstdlib>
long long ans;
int n;
struct type{
double x,y;
}p[+];
bool check(type a,type b)
{
if(a.x == b.x || a.y == b.y) return true;
return false;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);
ans=;
for(int i=;i<n;i++)
{
for(int j=i+;j<=n;j++)
{
if(check(p[i],p[j])) ans++;
}
}
printf("%lld\n",ans);
}
}

这大概要耗时4秒左右。

所以可以考虑把用map把出现过的水平线(y=k的k作为key值)或者竖直线记录下来(x=k的k作为key值),然后把出现过的两个哨兵在相同的点上的情况也记录下来,

这样,每输入一个哨兵的坐标,ans+= “与他在同一条水平线上的人” + “与他在同一条竖直线上的人” - “与他在同一个坐标上的人(因为这样的人重复算了两次)”

 #include<cstdio>
#include<map>
using namespace std;
typedef long long ll;
pair<ll,ll> now;
map<ll,ll> a,b;
map<pair<ll,ll>,ll> same;
int n;
ll ans,x,y;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
a.clear();b.clear();same.clear();
ans=;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
ans=ans+a[x]+b[y]-same[make_pair(x,y)];
a[x]++;
b[y]++;
same[make_pair(x,y)]++;
}
printf("%d\n",ans);
}
}

这样耗时大概是1秒左右。

JNUOJ 1187 - 哨兵的更多相关文章

  1. 深入浅出Redis-redis哨兵集群

    1.Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所 ...

  2. StackExchange.Redis客户端读写主从配置,以及哨兵配置。

    今天简单分享一下StackExchange.Redis客户端中配置主从分离以及哨兵的配置. 关于哨兵如果有不了解的朋友,可以看我之前的一篇分享,当然主从复制文章也可以找到.http://www.cnb ...

  3. Redis高可用集群方案——哨兵

    本篇文章版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文系列地址http://www.cnblogs.com/tdws/tag/NoSql/ 本人之前有篇文章,讲到了redis主从复制,读写分 ...

  4. jedis支持哨兵主从配置role为slave

    jedis功能强大,但是不能像nodejs一样指定从slave中读数据,使数据量读写量较大时读写分离,减少redis压力. 我们可以利用jedis中的方法封装一个类似于此的方法. github地址: ...

  5. Redis 哨兵模式实现主从故障互切换

    200 ? "200px" : this.width)!important;} --> 介绍 Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 S ...

  6. redis哨兵配置

    redis哨兵配置主从   redis哨兵的启动和redis实例的启动没有关系.所以可以在任何机器上启动redis哨兵.至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点. 配置步骤: 1.在 ...

  7. Redis设计与实现-主从、哨兵与集群

    主从 从机使用slaveof 命令来复制主机的缓存数据,包括同步sync与命令传播两个操作: 从机同步sync命令给主机,主机收到后执行需要耗费大量cpu.内存和磁盘IO资源的bgsave命令来生成r ...

  8. redis哨兵配置主从

    redis哨兵的启动和redis实例的启动没有关系.所以可以在任何机器上启动redis哨兵.至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点. 配置步骤: 1.在redis的配置文件中添加鉴 ...

  9. Redis Sentinel哨兵集群

    Redis Sentinel(哨兵集群)是一种高可用的redis部署方案.在集群中的redis-master服务挂掉时,无需人为干预,即可通过哨兵集群的自我调整,实现redis服务的持续可用. 哨兵集 ...

随机推荐

  1. 【GIS】地球经纬度和米换算(转)

    经度的定义是过某点的经线面和本初子午面之间的夹角.纬度的定义是过某点的球面切面垂线与赤道平面之间的线面角.可见,如果不加限定,1"之间的距离没有意义. 假设地球为一半径为R的表面光滑圆球体, ...

  2. IOPS性能指标

    如何计算mysql的IOPS? qps 每秒处理的查询数tps 每秒处理的事务数IOPS,每秒磁盘进行的I/O操作次数 今天看到一篇文章说磁盘理论最大IOPS为200左右,我有两个疑问:1.MYSQL ...

  3. RF失败案例重跑

    1.1        失败案例重跑 该功能主要是针对上次连跑失败的案例需要重新执行测试的情况,可自动识别上次执行失败的案例并进行重跑,无需手动选择相应的案例,简单高效. 1.5.1.        重 ...

  4. iOS开发--NSDateFormatter

    NSDate对象包含两个部分,日期(Date)和时间(Time).格式化的时间字符串主要也是针对日期和时间的 1.基础用法 NSDate* now = [NSDate date]; NSDateFor ...

  5. java.lang.NumberFormatException: For input string: "${jdbc.maxActive}"

    一.问题 使用SpringMVC和MyBatis整合,将jdbc配置隔离出来的时候出现下面的错误,百度了很久没有找到解决方法,回家谷歌下,就找到解决方法了,不得不说谷歌就是强大,不废话,下面是具体的错 ...

  6. 关于Kafka幂等producer的讨论

    众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS).Kafka的EOS主要体现在3个方面: 幂等producer:保证发送单 ...

  7. 原创:超简单!windows配置NDK开发环境使用JNI

    前段时间看android版的opencv的配置教程时,看到了它的NDK配置方法,感觉简单又不会出错!!! 1.下载NDK,设置NDK路径: 在windows的系统环境变量中添加NDK的路径,环境变量名 ...

  8. Qt编写可拖动对象+背景地图+多种样式+多种状态(开源)

    在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,为此特意编写本控件,全部开源出来,欢迎大家提建议.同时多多支持整套自定义控件 ...

  9. Excel 2010 得到当天的日期/得到一年中的第几周/得到当前一周中的星期几

    =TODAY() ="第"&WEEKNUM(TODAY())&"周" =TEXT(TODAY(),"aaaa") Ctrl ...

  10. 题目1144:Freckles(最小生成树进阶)

    题目链接:http://ac.jobdu.com/problem.php?pid=1144 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...