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. django文件上传、图片验证码、抽屉数据库设计

    1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...

  2. 孤荷凌寒自学python第二十一天初识python的类

    孤荷凌寒自学python第二十一天初识python的类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 类是面向对象的编程语言非常重要的概念. 编程语言的进化史中从顺序编程到结构化编程,最后才 ...

  3. 线段树 (区间更新,区间查询) poj http://poj.org/problem?id=3468

    题目链接 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...

  4. 参加2018之江杯全球人工智能大赛
:视频识别&问答

    学习了一段时间的AI,用天池大赛来检验一下自己的学习成果. 题目:参赛者需对给定的短视频进行内容识别和分析,并回答每一个视频对应的问题.细节请到阿里天池搜索. 两种思路 1 将视频截成一帧一帧的图片, ...

  5. Python保护变量、私有变量、私有方法

    保护变量.私有变量.私有方法介绍: _xxx: 单下划线开头叫保护变量,意思是只有类对象和子类对象自己能访问到这些变量,此变量不能通过from XXX import xxx 导入: __xxx : 双 ...

  6. android 远程Service以及AIDL的跨进程通信

    在Android中,Service是运行在主线程中的,如果在Service中处理一些耗时的操作,就会导致程序出现ANR. 但如果将本地的Service转换成一个远程的Service,就不会出现这样的问 ...

  7. poj1273 网络流入门题 dinic算法解决,可作模板使用

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 62078   Accepted: 2384 ...

  8. 【PHP】- 启用CRUL和GD

    1.修改php.ini文件,确保extension_dir配置为php目录的ext,如图: 2.修改php.ini文件,将以下两项取消注释: 3.将php目录下的 libeay32.dll 和 lib ...

  9. 【bzoj3585/bzoj3339】mex/Rmq Problem 莫队算法+分块

    原文地址:http://www.cnblogs.com/GXZlegend/p/6805283.html 题目描述 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没 ...

  10. background-size属性的几个实用的值

    先来看w3c的background-size的几个值: background-size:cover;    把背景图像扩展至足够大,以使背景图像完全覆盖背景区域.背景图像的某些部分也许无法显示在背景定 ...