ABC155 D pair 取整坑点

思路

很常见的一道题,二分找答案,然后看这个答案排rank?,排rank?用二分继续找一遍二分套二分即可,就是边界比较烦,老年人写的心情烦躁

老年人被取整坑的几天。这题其实以前写过,以前被坑过,然后这次又被坑了一次,不愧是我。。。

1.ceil和floor一个是接近无穷大,另外一个是接近无穷小取

2.直接两个int除 是向0取整 int(-1/2)=-1 int(-4/3)=-1也就是负数的时候和人正常的向下取整逻辑不一样,逻辑上认为是向小了取,而事实是向0取

3.如果n>=m>0向上取整建议(n-1)/m+1

4.负数的时候推荐使用ceil 除非精度要求特别高 否则一般不会翻车

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define F first
#define S second
#define mkp make_pair
#define pii pair<int,int>
typedef long long ll;
const int maxn=2e5+5;
const int mod=1e9+7;
ll n,k,ling;
ll a[maxn];
bool check(ll x){
ll cnt=0;
for(int i=0;i<n;i++){
if(a[i]==0){
if(x>=0)cnt+=n-1;
continue;
}
else if(a[i]<0){
ll tmp=0;
if(x>=0)tmp=x/a[i];//a[i]*tmp<=x
else {
if(x%a[i]==0)tmp=x/a[i];
else tmp=x/a[i]+1;
}
cnt+=n-(lower_bound(a,a+n,tmp)-a);
}
else if(a[i]>0){
ll tmp=0;
if(x>=0)tmp=x/a[i];
else{
if(x%a[i]==0)tmp=x/a[i];
else tmp=x/a[i]-1;
}
cnt+=upper_bound(a,a+n,tmp)-a;
}
if(a[i]*a[i]<=x)cnt--;
//cout<<cnt<<endl;
}
return cnt/2>=k;
}
int main(){
scanf("%lld%lld",&n,&k);
for(int i=0;i<n;i++){
scanf("%lld",&a[i]);
}
sort(a,a+n);
ll l=-1e18,r=1e18,ans=0;
while(l<=r){
ll mid=(l+r)/2;
if(check(mid))r=mid-1,ans=mid;
else l=mid+1;
} //check(-6);
cout<<ans<<endl;
}

ABC155 D pair 边界处理取整的更多相关文章

  1. js 为何范围内随机取整要用floor,而不是ceil或者round呢

     壹 ❀ 引 我在如何使用js取任意范围内随机整数这篇博客中,列举并分析了取[n,m)与[n,m]范围内整数的通用方法,并在文章结果留了一个疑问:为什么通用方法中取整操作,我们使用Math.floor ...

  2. 灯光照射,圆形探测类问题(解题报告)<分层差分><cmath取整>

    题目描述 一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到. 输入输出格式 输入格式: (1<=r<n<=5000) (1<=m ...

  3. ios小数向上、下取整,计算结果向上、下取整

    [摘要:小数背上与整,指小数局部间接进1 x=3.14, ceilf (x)=4 小数背下与整,指间接往失落小数局部 x=3.14,floor(x)=3 盘算效果背上与整 A被除数,B除数 ,(AB- ...

  4. Java Math 取整的方式

    1.Math.floor floor,英文原意:地板. Math.floor 函数是求一个浮点数的地板,就是 向下 求一个最接近它的整数,它的值肯定会小于或等于这个浮点数. 2.Math.ceil c ...

  5. c#中取整,向上取,向下取

    Math.Ceiling()向上取整, Math.Floor()向下取整 示例: d = 4.56789 Math.Ceiling(Convert.ToDecimal(d)).ToString();M ...

  6. iOS 常用的向上,向下取整, 四舍五入函数

    向上取整:ceil(x),返回不小于x的最小整数; 向下取整:floor(x),返回不大于x的最大整数; 四舍五入:round(x) 截尾取整函数:trunc(x)  

  7. Sql 获取向上取整、向下取整、四舍五入取整的实例

    [四舍五入取整截取] select round(54.56,0) [向下取整截取] SELECT FLOOR(54.56) [向上取整截取]  SELECT   CEILING(13.15) --MS ...

  8. js只保留整数,向上取整,四舍五入,向下取整等函数

    1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3.四舍五入. Math.round(5/2) 4.向下取整 Math.f ...

  9. javascript 取整,取余数

    1.丢弃小数部分,保留整数部分 parseInt(5/2) 2 2.向上取整,有小数,则整数部分加1 Math.ceil(5/2) 3 3.四舍五入 Math.round(5/2) 3 4.向下取整 ...

随机推荐

  1. python网络爬虫(三)requests库的13个控制访问参数及简单案例

    酱酱~小编又来啦~

  2. C# 8.0 新特性之二:接口默认实现

    ​      在C#8.0中,针对接口引入了一项新特性,就是可以指定默认实现,方便对已有实现进行扩展,也对面向Android和Swift的Api进行互操作提供了可能性.下面我们来看看该特性的的概念.规 ...

  3. java设计模式学习笔记--开闭原则

    基本介绍 1.开闭(ocp)原则时编程中最基础.最重要的设计原则 2.一个软件实体如类.木块和函数应该对扩展开放,对修改关闭.用抽象构建框架,用实现扩展细节.即对提供方开放,对使用方关闭. 3.当软件 ...

  4. SharePoint PowerShell SendEmail

    前言 最近碰到这样一个需求,用户需要个简单的定时邮件提醒,就是抓取SharePoint某个列表里的值,然后作为邮件地址/邮件主题/邮件内容发送出去. 自己想了想,既然用户要求每天定时发送,那么肯定是任 ...

  5. Sunset: dusk: Vulnhub Walkthrough

    靶机链接: https://www.vulnhub.com/entry/sunset-dusk,404/ 主机IP扫描: IP端口扫描: 21 端口  pyftpdlib 1.5.5 版本漏洞 25 ...

  6. hash类型的应用场景 —— Redis实战经验

    hash类型是一个string类型的field和value的映射表,每个 hash 可以存储 232 - 1 键值对(40多亿),hash类型主要有以下应用场景. 1. 购物车 以用户id为key,商 ...

  7. css3神奇的圆角边框、阴影框及其图片边框

    css3圆角,建议IE10以上 如果border-radius 单位是百分比,则参考为自身宽高,因此当宽高不一致时,圆角为不规则形状 如果border-radius 为50%,则为椭圆:当宽高一致时, ...

  8. Failed to resolve: com.android.support:appcompat-v7:29.+ 版本不一致错误

    这个问题,困扰了我一天,终于解决, 问题的根本就是 Android studio 的 SDK Build-Tools 与工程所需的不一致.具体讲解如下: 具体解决方案: 1.既然是版本问题,那就的先去 ...

  9. 【Android】java中调用JS的方法

    最近因为学校换了新的教务系统,想做一个模拟登陆功能,发现登陆的账号和密码有一个js脚本来进行加密 整理了一下java中执行JS的方法 智强教务 账号 密码 加密方法 var keyStr = &quo ...

  10. mysql 表分区操作

    //不支持动态创建分区CREATE TABLE `rpt_exp_event_bucket_creative_d_across` ( `bucket_id` VARCHAR(200) NOT NULL ...