Description

As shown in the following figure, If another lighthouse is in gray area, they can beacon each other.

For example, in following figure, (B, R) is a pair of lighthouse which can beacon each other, while (B, G), (R, G) are NOT.

Input

1st line: N

2nd ~ (N + 1)th line: each line is X Y, means a lighthouse is on the point (X, Y).

Output

How many pairs of lighthourses can beacon each other

( For every lighthouses, X coordinates won't be the same , Y coordinates won't be the same )

Example

Input

3
2 2
4 3
5 1

Output

1

Restrictions

For 90% test cases: 1 <= n <= 3 * 105

For 95% test cases: 1 <= n <= 106

For all test cases: 1 <= n <= 4 * 106

For every lighthouses, X coordinates won't be the same , Y coordinates won't be the same.

1 <= x, y <= 10^8

Time: 2 sec

Memory: 256 MB

Hints

The range of int is usually [-231, 231 - 1], it may be too small.

第一眼看到这题时第一反应是用树状数组,但是发现数据太大,开不了10的6次方的二维数组,看了别人的博客才知道是用归并排序。

先理解一下题意,要求有多少对两两互相照亮的灯塔,怎么样才能是两两互相照亮的呢,两点的斜率为正,也就是按x递增排序,y也递增。

这样咱们就可以把n个点对x进行排序,找到y有多少对是顺序对就行,这就可以用到归并排序,在对左右两个集合合并时,i,j分别为左右两个集合的

指针,如果le[i]<ri[j],正序对加上n2-j+1对,就这样去考虑。还有就是那里不能用<algorithm>,可以用stdlib.h里的qsort()。

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib> using namespace std; struct w
{
int x;
int y;
}k[];
int yi[];
long long ans;
int le[],ri[]; int cmp( const void *a ,const void *b)
{
return (*(w *)a).x > (*(w *)b).x ;
} void merge(int l,int mi,int r)
{
int i,j,p,n1=mi-l+,n2=r-mi;
const int MAX=; for (int i=;i<=n1;i++)
le[i]=k[l+i-].y;
for (int i=;i<=n2;i++)
ri[i]=k[mi+i].y; le[n1+]=MAX;ri[n2+]=MAX;
i=;j=;
for (int p=l;p<=r;p++)
{
if (le[i]>ri[j])
k[p].y=ri[j++];
else
{
k[p].y=le[i++];
ans+=n2-j+;
// cout <<ans<<endl;
}
}
}
void mergesort(int l,int r)
{
if (l==r)
return;
int mid=l+(r-l)/;
mergesort(l,mid);
mergesort(mid+,r);
merge(l,mid,r);
} int main()
{
int n;
cin>>n;
for (int i=;i<n;i++)
cin>>k[i].x>>k[i].y;
qsort(k,n,sizeof(k[]),cmp);
ans=;
mergesort(,n-);
cout <<ans<<endl;
return ;
}

灯塔(LightHouse)的更多相关文章

  1. 【Tsinghua OJ】灯塔(LightHouse)问题

    描述 海上有许多灯塔,为过路船只照明.从平面上看,海域范围是[1, 10^8] × [1, 10^8] . (图一) 如图一所示,每个灯塔都配有一盏探照灯,照亮其东北.西南两个对顶的直角区域.探照灯的 ...

  2. 清华学堂 LightHouse

    灯塔(LightHouse) Description As shown in the following figure, If another lighthouse is in gray area, ...

  3. 前端性能之LightHouse

    "灯塔"(LightHouse)前端性能优化测试工具 (谷歌亲儿子) 一 灯塔v6/v7版是通过几种性能指标及不同权重来进行计分的 前端性能指标主要是根据PerformanceTi ...

  4. ACM/ICPC 之 快排+归并排序-记录顺序对(TSH OJ-LightHouse(灯塔))

    TsingHua OJ 上不能使用<algorithm>头文件,因此需要手写快排(刚开始写的时候自己就出了很多问题....),另外本题需要在给横坐标排序后,需要记录纵坐标的顺序对的数量,因 ...

  5. 谷歌性能测评工具lighthouse使用

    1.谷歌插件lighthouse的基本介绍 Lighthouse 是一个网站性能测评工具, 它是 Google Chrome 推出的一个开源自动化工具,能够对 PWA 和网页多方面的效果指标进行评测, ...

  6. 新上市Lighthouse专用芯片TS3633规格介绍

    背景介绍 Valve 有远大的愿景.它决心要把 SteamVR 追踪系统推向世界,从虚拟现实里的空间定位,到机器人领域,Valve 想为各种环境下的跟踪应用提供支持. 上个月,Valve 方面宣布会把 ...

  7. svg绘制蓝色星空,月亮,旋转灯塔

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  8. [bzoj4850][Jsoi2016]灯塔

    来自FallDream的博客,未经允许,请勿转载,谢谢. JSOI的国境线上有N一座连续的山峰,其中第ii座的高度是hi??.为了简单起见,我们认为这N座山峰排成了连续一条 直线.如果在第ii座山峰上 ...

  9. Lighthouse前端性能优化测试工具

    在前端开发中,对于自己开发的app或者web page性能的好坏,一直是让前端开发很在意的话题.我们需要专业的网站测试工具,让我们知道自己的网页还有哪些需要更为优化的方面,我自己尝试了一款工具:Lig ...

随机推荐

  1. UCOS 信号量

    uCOS-II信号量OSSemCreate(0)和OSSemCreate(1)详解 (2014-04-22 18:04:18) 转载▼ 标签: it 分类: 操作系统 在ucos-II中,为了实现任务 ...

  2. Tomcat目录下的各个文件夹的作用

    1.bin:存放各种不同平台开启与关闭Tomcat的脚本文件. 2.lib:存tomcat与web应用的Jar包 3.conf:存放tomcat的配置文件 4.webapps:web应用的发布目录,包 ...

  3. Java Timer 定时器的使用

    设置定时任务很简单,用Timer类就搞定了. 一.延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行. 代码如下:package test;i ...

  4. 瑞柏匡丞谈中国移动app的国际进阶路

    当今3.0互联时代,已然形成了一个移动化,互动化,全球化的完整体系.瑞柏匡丞也在常年与国内外客户的交流沟通中有了自己的些许见解. 国内的移动产业的发展已然非常迅速,但也正是因为各类企业的不断崛起,能够 ...

  5. CSS多级数字序号的目录列表(类似3.3.1.这样的列表序号)

    编写文档手册的时候,我们经常需要列表项前面的序号将上级各层的序号也附加在前面,如下图: (图一)  但默认的<ol>列表,任何层次都是单个序号开始.如下图: (图二) 要实现图一效果,方法 ...

  6. c语言指针与结构体之内存动态分配

    struct dangdangtest { ]; ]; ]; int num; int bugnum; ]; ]; double RMB; }; void main2() { //struct dan ...

  7. 【转】打包AAC码流到FLV文件

    AAC编码后数据打包到FLV很简单.1. FLV音频Tag格式                              字节位置    意义0x08,                         ...

  8. Web 前端利器Emmet 的HTML用法总结

    在tutsplus那里看到一篇文章介绍Emmet 的用法,形象的gif图片一目了然,本来想翻译过来的(虽然翻译用法倒不是很难),但搜索发现已经有国人翻译过了,遂直接拿来转载在这里. Emmet 简介 ...

  9. Mysql--mysqldump命令 备份数据库

    mysqldump命令用来备份数据库. mysqldump命令在DOS的[url=file://\\mysql\\bin]\\mysql\\bin[/url]目录下执行. 1) 导出整个数据库(导出文 ...

  10. iOS中自动释放问题?

    --前言:iOS开发中关于对象的释放问题,虽然知道规则,但总不清楚自动释放的对象什么时候彻底消失?它存在的多久?什么情况会消失?都不清楚,每次用自动释放对象,总有点心虚的感觉,以下是一些例子.研究. ...