卿学姐与城堡的墙

Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit Status

卿学姐终于来到了魔王的城堡,城堡修建的十分壮观。

即使心中放不下公主,卿学姐还是忍不住驻足观赏这宏伟的建筑。

卿学姐注意到城堡的墙上有若干直线状的花纹。

可以将墙看做一个平面,卿学姐想知道有多少种方式任取两个直线,使得这两个直线的交点的横坐标xx满足:u≤x≤vu≤x≤v。

Input

第一行三个整数N,u,vN,u,v,标明直线有NN条。

接下来有NN行,每行两个整数k,bk,b,表示这条直线是y=kx+by=kx+b

1≤N≤2000001≤N≤200000

0≤|k|≤10000000000≤|k|≤1000000000

0≤|b|≤10000000000≤|b|≤1000000000

0≤|u|≤10000000000≤|u|≤1000000000

0≤|v|≤10000000000≤|v|≤1000000000

输入保证u≤vu≤v,保证没有两条直线是一样的

Output

输出一个整数,代表选择的方法数。

Sample input and output

Sample Input Sample Output
3 -3 1
-1 3
2 2
1 1
3

Hint

上图是样例的解释,交点是A,B,C

其实就是求逆序对数,先分别算出与u的交点和与v的交点,把u从小到大排序,然后依次把与v的交点加入树状数组,因为后加入的直线与u的交点肯定大于先加入直线与u的交点,所以后加入的直线与v的交点只要小于或者等于先加入的直线与v的交点就可以判断出必定相交,也就成了求逆序对数的问题了,还要离散化,因为数据范围都太大了。。。

#pragma GCC diagnostic error "-std=c++11"
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector> using namespace std;
typedef long long LL;
const int N = + ;
struct Point{
LL x, y;
bool operator < (const Point &X) const{
if(x != X.x) return x < X.x;
return y > X.y;
}
}; int c[N << ];
vector<Point> a;
vector<LL> tot; LL Query(int x){
LL ret = ;
while(x){
ret += c[x];
x -= x&(-x);
}
return ret;
} void change(int x){
while(x <= (int)tot.size()){
c[x]++;
x += x&(-x);
}
} int main(){
//std::ios::sync_with_stdio(false);
LL n, u, v, b, k;
cin >> n >> u >> v;
for(int i = ; i < n; i++){
cin >> k >> b ;
a.push_back((Point){k*u+b, k*v+b});
tot.push_back(a[i].x);
tot.push_back(a[i].y);
}
sort(tot.begin(), tot.end()); tot.resize(distance(tot.begin(), unique(tot.begin(), tot.end()))); for(Point &i:a){
i.y = (LL)(lower_bound(tot.begin(), tot.end(), i.y) - tot.begin()) + ;
i.x = (LL)(lower_bound(tot.begin(), tot.end(), i.x) - tot.begin()) + ;
} sort(a.begin(), a.end());
LL ans = ;
for(Point &i:a){
ans += Query((int)tot.size()) - Query(i.y - );
change(i.y);
}
cout << ans << endl;
}

E - 卿学姐与城堡的墙(树状数组求逆序数)的更多相关文章

  1. cdoj1341卿学姐与城堡的墙

    地址:http://acm.uestc.edu.cn/#/problem/show/1341 题目: 卿学姐与城堡的墙 Time Limit: 2000/1000MS (Java/Others)    ...

  2. CDOJ 1292 卿学姐种花 暴力 分块 线段树

    卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...

  3. 哈理工赛 H-小乐乐学数学 /// 筛法得素数表+树状数组

    题目大意: 给定n个数 m个询问 询问l r区间内的孤独数的个数 孤独数的定义为在该区间内与其他所有数互质的数 看注释 #include <bits/stdc++.h> using nam ...

  4. 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)

    链接:https://ac.nowcoder.com/acm/contest/392/F来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K ...

  5. cdoj 1324 卿学姐与公主 线段树裸题

    卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  6. UESTC - 1324 卿学姐与公主

    题目链接 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中. 英勇的卿学姐拔出利刃冲向了拯救公主的道路. 走过了荒野,翻越了 ...

  7. cdoj1324卿学姐与公主

    地址:http://acm.uestc.edu.cn/#/problem/show/1324 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memo ...

  8. CDOJ 1324 卿学姐与公主(分块)

    CDOJ 1324 卿学姐与公主(分块) 传送门: UESTC Online Judgehttp://acm.uestc.edu.cn/#/problem/show/1324 某日,百无聊赖的卿学姐打 ...

  9. A - 卿学姐与公主(线段树+单点更新+区间极值)

    A - 卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

随机推荐

  1. 分布式-信息方式-ActiveMQ的Destination高级特性2

    使用filtered destinations,在xml配置如下: <destinationInterceptors> <virtualDestinationInterceptor& ...

  2. 超全详解Java开发环境搭建

    摘自:https://www.cnblogs.com/wangjiming/p/11278577.html 超全详解Java开发环境搭建   在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必 ...

  3. 对于Java培训出身的同学,接下来该怎么学习技术?

    首先恭喜从培训班出来找到工作的同学,确实挺不容易的,4个月的培训,每天从早上9点到晚上9点,也是996,主要的活动地方就是宿舍和教室, 让我现在也去培训,我估计还熬不下来. 尤其是对于从小白开始的同学 ...

  4. SpringBoot整合kafka(安装)

    项目路径:https://github.com/zhaopeng01/springboot-study/tree/master/study_14 序言 Kafka 是一种高吞吐的分布式发布订阅消息系统 ...

  5. Java-线程等待、唤醒与中断

    一.sleep() 与 wait() 两者都会让当前线程进入等待状态.唤醒后都需要等待 CPU 资源,不一定会立即执行.若在等待期间被调用此线程的的 interrupt() 方法,将会产生 Inter ...

  6. leetcode-easy-math-326. Power of Three

    mycode class Solution(object): def isPowerOfThree(self, n): """ :type n: int :rtype: ...

  7. CentOS 6.4 搭建 ntop 网络流量监控分析平台

    [前言] Ntop是一种监控网络流量工具,用ntop显示网络的使用情况比其他一些网络管理软件更加直观.详细.Ntop甚至可以列出每个节点计算机的网络带宽利用率. 功能: 自动从网络中识别有用的信息: ...

  8. 新建一个浏览器APP

    安卓开发环境准备好了,试试新建一个浏览器程序吧 1.Start a new Android Studio Project 2.选这个像微信一样的样式 3.选择语言和版本 4.等待创建完成,拖一个Web ...

  9. leetcode 198. House Robber 、 213. House Robber II 、337. House Robber III 、256. Paint House(lintcode 515) 、265. Paint House II(lintcode 516) 、276. Paint Fence(lintcode 514)

    House Robber:不能相邻,求能获得的最大值 House Robber II:不能相邻且第一个和最后一个不能同时取,求能获得的最大值 House Robber III:二叉树下的不能相邻,求能 ...

  10. Kafka集群搭建和配置

    Kafka配置优化 https://www.jianshu.com/p/f62099d174d9 1.安装&配置 下载tar包 解压后即可使用 修改配置文件 将server.propertie ...