bzoj 2441 [中山市选2011]小W的问题

Description

有一天,小W找了一个笛卡尔坐标系,并在上面选取了N个整点。他发现通过这些整点能够画出很多个“W”出来。具体来说,对于五个不同的点(x1, y1), (x2, y2), (x3, y3), (x4, y4), (x5, y5),如果满足:

·x1 < x2 < x3 < x4 < x5

·y1 > y3 > y2

·y5 > y3 > y4

则称它们构成一个“W”形。

现在,小W想统计“W”形的个数,也就是满足上面条件的五元点组个数。你能帮助他吗?

Input

第一行包含一个整数N,表示点的个数。

下面N行每行两个整数,第i+1行为(xi, yi),表示第i个点的坐标。

Output

仅包含一行,为“W”形个数模1 000 000 007的值。

Sample Input

6

1 10

2 1

3 5

4 6

5 1

6 10

Sample Output

3

HINT

对于100%的数据满足N ≤ 200 000,0 ≤ xi ≤ 10^9,0 ≤ yi ≤ 10^9

Solution

第一次做这道题可能是八九个月之前了,当时看题解看了半天,今天重做了一遍,感觉还是细节多到爆炸

NewTrain 里面有好几道这样给定平面上的点计数的问题,套路基本都差不多

首先一个明显的想法就是把 'W' 变成两个 'V'

那么题目转化成求 'V' 形状的个数,并且把他记录在 'V' 的某一个端点上

最后计算答案就是把每个点当做两个 'V' 的公共点求一个答案

现在我们把形状转化成三元组,比如三元组 (1,2,3)表示的是一个三个点上升的形状,就是 x1 < x2 < x3, y1 < y2 < y3,而题目里的三元组就是 (3,1,2) 和 (2,1,3) ,公共点就是 2

两种形状的统计是等价的,所以只讨论把 (3,1,2) 的个数并且记录在 2 上

有一种比较暴力的做法,按照纵坐标排序,每个点上面的数表示未插入的序列(也就是纵坐标比他大的点中横坐标比他小的的点,实际上就是他左上角的点数量),那么以 i 这个位置为 2 的 (3,1,2) 的个数就是他左下角的点对应的数的和,因为现在在未插的数都是大于 i 的纵坐标的。

考虑怎么维护这个东西,计数的过程比较简单,就是树状数组统计插入的点的横坐标及其对应的数。

修改的时候,事实上每插入一个点就会对未插入序列中横坐标比他大的所有点影响,使他们的数减去 1

这种做法比较暴力,而且在有相等坐标的时候细节较多

下面有一种比较精妙的做法

我们考虑(2,1,3) 的个数

很显然不好做,所以考虑容斥

网上说直接用 (?,?,3) - (1,2,3) 就可以了,但是我不明白这样怎么能统计到 2 这个位置上,我觉得这样只能放在 3 上,然后就爆炸了

后来我自己想了一个复杂一点的容斥,考虑当前点是 i,我们将每个点的权值设为这个点的右侧的点的个数,那么考虑 i 右侧所有纵坐标小于 i 的点的权值和 - (3,2,1) - (3,1,2) 就是答案了

这样比第一种做法好写好调得多

综上所述,这题出的纯粹为了恶心人(你说明明会了 'v' 就会 'w',他硬是要你写两遍不同方向的,而且明明可以出成横纵坐标都不相等,可以方便得多)

代码就不附了,比较丑陋

bzoj 2441 [中山市选2011]小W的问题的更多相关文章

  1. bzoj2441 [中山市选2011]小W的问题(debug中)

    2441: [中山市选2011]小W的问题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 487  Solved: 186[Submit][Statu ...

  2. BZOJ2441: [中山市选2011]小W的问题

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2441 首先要注意到x1>x3且x5>x3(要是没有这个设定就是树状数组水题了.. ...

  3. 2019.01.21 bzoj2441: [中山市选2011]小W的问题(树状数组+权值线段树)

    传送门 数据结构优化计数菜题. 题意简述:给nnn个点问有多少个www型. www型的定义: 由5个不同的点组成,满足x1<x2<x3<x4<x5,x3>x1>x2 ...

  4. BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数

    BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\)). 题解 首先二分答案,问题就转化成了求\([ ...

  5. BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4805  Solved: 2325[Submit][Sta ...

  6. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3028  Solved: 1460[Submit][Sta ...

  7. BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )

    先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...

  8. Bzoj 2440: [中山市选2011]完全平方数(莫比乌斯函数+容斥原理+二分答案)

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平 ...

  9. bzoj2441【中山市选】小W的问题

    题目描述 有一天,小W找了一个笛卡尔坐标系,并在上面选取了N个整点.他发现通过这些整点能够画出很多个“W”出来.具体来说,对于五个不同的点(x1, y1), (x2, y2), (x3, y3), ( ...

随机推荐

  1. Fastjson 简介

    Fastjson is a Java library that can be used to convert Java Objects into their JSON representation. ...

  2. platform_set_drvdata 和 platform_get_drvdata

    ndev是我们在probe函数中定义的局部变量,如果我想在其他地方使用它怎么办呢? 这就需要把它保存起来.内核提供了这个方法,使用函数platform_set_drvdata()可以将ndev保存成平 ...

  3. BZOJ 2023 [Usaco2005 Nov]Ant Counting 数蚂蚁:dp【前缀和优化】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2023 题意: 有n个家族,共m只蚂蚁(n <= 1000, m <= 1000 ...

  4. codeforces B. Multitasking 解题报告

    题目链接:http://codeforces.com/problemset/problem/384/B 题目意思:给出n个数组,每个数组包括m个数字,当k = 0 时,需要把n个数组都按照从小到大的顺 ...

  5. llala js弹出层 颜色渐变

    网址:http://bbs.csdn.net/topics/370254842

  6. 异步执行js脚本——防止阻塞

    JS允许我们修改页面中的所有方面:内容,样式和用户进行交互时的行为. 但是js同样可以阻塞DOM树的形成并且延迟页面的渲染. 让你的js变成异步执行,并且减少不必要的js文件从而提高性能. JavaS ...

  7. Python: PS 图像特效 — 模糊玻璃

    今天介绍一种基于高斯滤波和邻域随机采样,生成一种毛玻璃的图像特效,简单来说,就是先对图像做高斯滤波模糊,然后对模糊后的图像,通过对邻域的随机采样来赋予当前的像素点,这样,生成的图像有有一定的随机扰动和 ...

  8. java.lang.NoSuchMethodException: com.sun.proxy.$Proxy

    删掉了@Transactional注解,结果成功了 是这个注解造成的. 是ssh2的整合强制我们使用分层架构.

  9. mfc给对话框添加背景

    void CMyProjetDlg::OnPaint() { CPaintDC dc(this);//用于绘制设备的上下文 CRect rect; GetClientRect(&rect); ...

  10. Alien Flowers

    题意: 求含有A个"RR",B个"RB",C个"BB",D个"BR"的字符串个数. 解法: 首先考虑"BR&q ...