5163: 第k大斜率

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 15  Solved: 4
[Submit][Status][Discuss]

Description

在平面直角坐标系上,有n个不同的点。任意两个不同的点确定了一条直线。请求出所有斜率存在的直线按斜率从
大到小排序后,第k条直线的斜率为多少。为了避免精度误差,请输出斜率向下取整后的结果。(例如:[1.5]=1,
[-1.5]=-2)
 

Input

第一行,包含两个正整数n和k。
接下来n行,每行包含两个整数xi,yi,表示每个点的横纵坐标。
1 ≤ n≤ 100000 , k ≤ n , |xi|, |yi| ≤ 10^8

Output

输出一行,包含一个整数,表示第k小的斜率向下取整的结果。

Sample Input

4 1
-1 -1
2 1
3 3
1 4

Sample Output

2
 
估计正解对于大家来说都很简单。。。但是这题的题面太坑了。
 
首先不要轻易相信上述的题面,让我先来讲讲我的做题过程。。。。。
1.x坐标相同的是不是算斜率无穷大啊????一开始我这么想,后来发现x坐标的斜率不算之后能多撑1s多再WA,这说明x坐标相同的不能算。。。
这个还是最不坑啊,,,,
2.你们发没发现题目的OUTPUT里写的是第k小,但是通过观察样例和题目描述发现其实是第k大。。。
这个也还好,毕竟写反了可以看样例看出来。。。但是最后这个。。。
3.题目里说k<=n,我一开始还真信了hhhh,后来一直WA一直WA终于想到了n个点最多有n*(n-1)/2条可以计算斜率的直线,所以k开成long long还是好一点。。。
(然后开成long long就A了hhhh,我TM要打死出题人这题面真是没谁了,估计还要误导好多人hhhh)
 
#include<bits/stdc++.h>
#define ll long long
#define maxn 100005
using namespace std;
int l,r,mid,ans;
const int inf=1000000000;
int px[maxn],ky;
struct node{
int x,y;
ll tmp; bool operator <(const node& u)const{
return tmp==u.tmp?x<u.x:tmp<u.tmp;
}
}a[maxn];
int n,m,f[maxn];
ll k; inline int query(int x){
int an=0;
for(;x;x-=x&-x) an+=f[x];
return an;
} inline void update(int x,int y){
for(;x<=ky;x+=x&-x) f[x]+=y;
} inline ll calc(){
ll an=0;
memset(f,0,sizeof(f)); for(int i=1;i<=n;i++) a[i].tmp=(ll)a[i].y-mid*(ll)px[a[i].x]; sort(a+1,a+n+1); for(int i=1;i<=n;i++){
an+=(ll)query(a[i].x-1);
update(a[i].x,1);
} return an;
} int main(){
scanf("%d%lld",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].x,&a[i].y);
px[i]=a[i].x;
}
sort(px+1,px+n+1);
ky=unique(px+1,px+n+1)-px-1;
for(int i=1;i<=n;i++) a[i].x=lower_bound(px+1,px+ky+1,a[i].x)-px; l=-inf,r=inf;
while(l<=r){
mid=l+r>>1;
if(calc()>=k) ans=mid,l=mid+1;
else r=mid-1;
} printf("%d\n",ans);
return 0;
}

  

bzoj 5163: 第k大斜率的更多相关文章

  1. Luogu P4479 [BJWC2018]第k大斜率

    一道清真简单的好写的题 Luogu P4479 题意 求点集两两连出的直线中斜率第$ k$大的直线 $ Solution$ 二分答案,设$x_j \geq x_i$ 若点$ (x_i,y_i)$和点$ ...

  2. [luogu4479][BJWC2018]第k大斜率【二维偏序+二分+离散化+树状数组】

    传送门 https://www.luogu.org/problemnew/show/P4479 题目描述 在平面直角坐标系上,有 n 个不同的点.任意两个不同的点确定了一条直线.请求出所有斜率存在的直 ...

  3. BZOJ 2738 子矩阵第k大 | 二维树状数组 整体二分 分治

    BZOJ 2738 "矩阵乘法"(子矩阵第k大) 题意 给出一个矩阵,多次询问子矩阵中第k大的数是多少. 题解 我做这道题之前先照着这道题出了一道题,是这道题的一维版本,在这里:h ...

  4. bzoj 3784: 树上的路径 堆维护第k大

    3784: 树上的路径 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 88  Solved: 27[Submit][Status][Discuss] ...

  5. [BZOJ 3110] [Zjoi2013] K大数查询 【树套树】

    题目链接: BZOJ - 3110 题目分析 这道题是一道树套树的典型题目,我们使用线段树套线段树,一层是区间线段树,一层是权值线段树.一般的思路是外层用区间线段树,内层用权值线段树,但是这样貌似会很 ...

  6. BZOJ.3110.[ZJOI2013]K大数查询(整体二分 树状数组/线段树)

    题目链接 BZOJ 洛谷 整体二分求的是第K小(利用树状数组).求第K大可以转为求第\(n-K+1\)小,但是这样好像得求一个\(n\). 注意到所有数的绝对值\(\leq N\),将所有数的大小关系 ...

  7. BZOJ 3110: [Zjoi2013]K大数查询 [树套树]

    3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 6050  Solved: 2007[Submit][Sta ...

  8. [LeetCode] Kth Largest Element in an Array 数组中第k大的数字

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

  9. POJ2985 The k-th Largest Group[树状数组求第k大值+并查集||treap+并查集]

    The k-th Largest Group Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 8807   Accepted ...

随机推荐

  1. python-configparser模块,xml.etree模块

    操作键值对文件 #文件db格式为 [section] a = 1 b = 2 [section1] d = 3 c = 4 import configparser #获取所有节点 config = c ...

  2. eclipse把jar包引入项目的两种方法

    方法一: build path引入jar包 方法二: 把jar包放入lib文件夹 区别: 把jar包放入lib文件夹,以后把程序发给别人,别人可以直接运行而无需再自己添加jar包 总结: 1.有时即使 ...

  3. 孤荷凌寒自学python第四十天python 的线程锁RLock

     孤荷凌寒自学python第四十天python的线程锁RLock (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 因为研究同时在多线程中读写同一个文本文件引发冲突,所以使用Lock锁尝试同步, ...

  4. 仅需几行代码 轻松实现ETH代币空投

    仅需几行代码 轻松实现ETH代币空投 批量发送以太坊,部署下面的合约,然后往下面的合约打币,就可以分发 ragma solidity ^0.4.21; contract batchTransfer { ...

  5. JavaWeb笔记(八)JQuery

    三个版本 1.x:兼容 ie678,使用最为广泛的,官方只做BUG维护, 功能不再新增.因此一般项目来说,使用1.x版本就可以了 最终版本:1.12.4 2.x:不兼容ie678,很少有人使用,官方只 ...

  6. SheetJS & Error: Sheet names cannot exceed 31 chars

    SheetJS Error: Sheet names cannot exceed 31 chars title + version https://github.com/SheetJS/js-xlsx ...

  7. Spring Boot Executable jar/war 原理

    spring boot executable jar/war spring boot里其实不仅可以直接以 java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来 ...

  8. Lesson9 some interesting things in C#

    1.关键帧动画 1)xml 界面 <Page x:Class="Test.MainPage" xmlns="http://schemas.microsoft.com ...

  9. openstack内外网ip实现

    类似于阿里云ECS主机的内外网(双网卡不通网段)的结构,最终实现内外网区分隔离. https://www.aliyun.com/product/ecs/?utm_medium=text&utm ...

  10. poj 2079 Triangle (二维凸包旋转卡壳)

    Triangle Time Limit: 3000MS   Memory Limit: 30000KB   64bit IO Format: %I64d & %I64u Submit Stat ...