<题目链接>

题目大意:

给定一个整数序列,求出绝对值小于等于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. 数据结构HashMap(Android SparseArray 和ArrayMap)

    HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据 ...

  2. nginx实践(一)之静态资源web服务

    静态资源服务场景CDN 配置语法-文件读取(nginx优势之一sendfile) 配置语法-tcp_nopush 简单的说就是把多个包合并,一次传输给客户端 配置语法-tap_nodelay 配置语法 ...

  3. jquery_ajax 跨域

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. laravel 更新

    public function update(Request $request, ResponseFactoryContract $response) { $user = $request->u ...

  5. 攻击WordPress和其他程序

    1.SAAS服务(Software as a Service )管理其他作为内容管理的一个人框架的软件,http://www.turnkeylinx.org 上发布了很多测试应用的程序.WordPre ...

  6. h5 video标签的使用

     标签的布置 <video src="1.mp4" poster="1.jpg" id="vid" controls> 你的浏览 ...

  7. docker日志清理

    前言:docker运行久了,会发现它的映射磁盘空间爆满,尤其是yum安装的docker的 解决方法: 1. 用脚本清理,一般yum安装的docker,其存储空间一般都在/var/lib/docker/ ...

  8. docker文件复制到centos/linux/ubantun环境下

    1.有些时候我们需要将容器里面的文件,弄到系统里面来分析,像报错log等 格式:docker  cp  容器名:文件在容器里面的路径       要拷贝到宿主机的对应路径 2.有些情况下,我们需要将文 ...

  9. python练习册0006

    第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词. import re import os def get_li ...

  10. JQuery 标签之间组合取值

    <body> <div></div> <input type="text" value="first-1" /> ...