<题目链接>

题目大意:

给定一个整数序列,求出绝对值小于等于k的有序对个数。

解题分析:

$O(nlong(n))$的二分很好写,这里就不解释了。本题尺取$O(n)$也能做,并且效率很不错。

尺取:

#include <bits/stdc++.h>
using namespace std; int arr[int(1e5+)]; int main(){
int T,n,k;scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
scanf("%d",&arr[i]);
sort(arr+,arr++n);
long long ans=;
for(int l=,r=;l<=n;++l){
while(r+<=n && arr[r+]-arr[l]<=k)r++; //因为需要判断后面的arr[r+1]是否符合条件,从而决定r是否要右移,所以这里用的是r+1
ans+=r-l;
}
printf("%lld\n",ans);
}
}

尺取

二分:

#include <bits/stdc++.h>
using namespace std; int arr[int(1e5+)]; int main(){
int n,k,T;scanf("%d",&T);while(T--){
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
scanf("%d",&arr[i]);
sort(arr+,arr++n);
long long ans=;
for(int i=;i<=n;i++){
int cur=arr[i]+k;
int l=,r=n;
while(l<=r){
int mid=l+r>>;
if(arr[mid]<=cur)l=mid+; //找到差值小于等于k的坐标最右的数
else r=mid-;
}
ans+=l--i; //因为最后符合的情况是运行l=mid+1指令,所以最后答案mid的值为l-1
}
printf("%lld\n",ans);
}
}

二分

2019-03-04

HDU 5178 pairs【二分】||【尺取】的更多相关文章

  1. Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot 【二分 + 尺取】

    任意门:http://codeforces.com/contest/1073/problem/C C. Vasya and Robot time limit per test 1 second mem ...

  2. HDU 5178 pairs(双指针)

    HDU 5178 pairs(双指针) Hdu 5178 解法:因为要求的是绝对值小于等于k,因此数字的序号关系并不重要,那么排序后使用双指针即可解决这个问题. #include<queue&g ...

  3. HDU 5178 pairs —— 思维 + 二分

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5178 pairs Time Limit: 2000/1000 MS (Java/Others)     ...

  4. hdu 6231 -- K-th Number(二分+尺取)

    题目链接 Problem Description Alice are given an array A[1..N] with N numbers. Now Alice want to build an ...

  5. HDU 5672 String 【尺取】

    <题目链接> 题目大意:给定一个只由26个小写字母组成的字符串,现在问你至少包含k个不同字母的连续子序列总数有多少. 解题分析:经仔细研究,我们发现,每次尺取到符合要求的最小区间,然后将区 ...

  6. 【二分+尺取】HDU 6119 小小粉丝度度熊

    http://acm.hdu.edu.cn/showproblem.php?pid=6119 [思路] 首先通过处理交叉的可以处理成不交叉的 然后二分查找答案 如何判断一个长度是否可行? 双指针O(n ...

  7. hdu 5178 pairs

    pairs 问题描述 John 在X轴上拥有nn个点,他们的坐标分别为$(x[i],0),(i=0,1,2,…,n-1)$. 他想知道有多少对< a,b ><a,b>满足|x[ ...

  8. hdu 5178 pairs (线性探查问题)

    Problem Description John has n points on the X axis, and their coordinates are (x[i],),(i=,,,…,n−). ...

  9. UVALive - 2678 二分/尺取

    题意:求最小的长度L满足该长度上的元素和大于等于S 最近dp做多了总有一种能用dp解决一切的错觉 二分长度解决 #include<iostream> #include<algorit ...

随机推荐

  1. java 中int与integer的区别

    int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...

  2. 瑞联科技:Pwp3框架 调用存储过程返还数据集合 到前端界面展示

    一:代码结构: 1:Js 代码结构 2:Java 代码结构 二:前端界面展示效果 为了数据安全性:界面数据做了处理 三:全端代码展示 1:main.vop <html> <head& ...

  3. Confluence 6 设置 Oracle 数据库准备

    请查看 Supported Platforms 页面来获得 Confluence 系统支持的 Oracle 数据库版本.你需要在安装 Confluence 之前升级你的 Oracle 数据库. 如果你 ...

  4. error: js/dist/app.js from UglifyJs Unexpected token: name (Dom7)

    What you did I have installed Swiper as normal dependency in my Project and import it to my scripts ...

  5. 3790:最短路径问题(HDU)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Inp ...

  6. SQLmap超详细文档和实例演示

    第一部分,使用文档的说明 Options(选项): -h, -–help 显示此帮助消息并退出 -hh 显示更多帮助信息并退出 –-version 显示程序的版本号并退出 -v VERBOSE 详细级 ...

  7. python(4): regular expression正则表达式/re库/爬虫基础

    python 获取网络数据也很方便 抓取 requests 第三方库适合做中小型网络爬虫的开发, 大型的爬虫需要用到 scrapy 框架 解析 BeautifulSoup 库, re 模块 (一) r ...

  8. cf1108E2 线段树类似扫描线

    /* 有点像扫描线 思路:从左到右枚举每个点,枚举到点i时,把所有以i为起点的区间的影响删去 再加上以i-1为结尾的区间的影响 */ #include<bits/stdc++.h> usi ...

  9. bzoj 3529

    非常好的一道莫比乌斯反演题,对提升自己的能力有很大帮助. 首先我们分析一下题意:题意让我们求,其中 那么我们首先对后面的式子进行一下变形,变形过程详见https://blog.csdn.net/lle ...

  10. Java面向对象(二)

    一.封装 1.为什么要使用封装在类的外部直接操作类的属性是”不安全的"2.如何实现封装   1).属性私有化:设置属性的修饰符为private    2) .提供公共的set和get方法赋值 ...