<题目链接>

题目大意:

给定一个整数序列,求出绝对值小于等于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. Gradle更小、更快构建APP的奇淫技巧

    本文已获得原作者授权同意,翻译以及转载原文链接:Build your Android app Faster and Smaller than ever作者:Jirawatee译文链接:Gradle更小 ...

  2. 10分钟了解Android的Handler机制

    Handler机制是Android中相当经典的异步消息机制,在Android发展的历史长河中扮演着很重要的角色,无论是我们直接面对的应用层还是FrameWork层,使用的场景还是相当的多.分析源码一探 ...

  3. swift 实践- 07 -- UISwitch 开关

    import UIKit class ViewController: UIViewController { var uiswitch: UISwitch? override func viewDidL ...

  4. Confluence 6 Windows 中以服务方式自动重启的原因

    针对长时间使用的 Confluence,我们推荐你配置 Confluence 自动随操作系统重启而启动.针对一些 Windows 的服务器,这意味着需要让 Confluence 以服务的方式运行. 有 ...

  5. Confluence 6 手动备份

    Confluence 的 Attachment Storage Configuration 可以配置 Confluence 将附件存储在  home directory,或者是存储在数据库中. Dat ...

  6. npm install Install error: Unexpected token < in JSON at position 35问题解决

    解决方案 rm package-lock.json worked.

  7. SpringMVC拦截器与异常处理

    点击查看上一章 在我们SpringMVC中也可以使用拦截器对用户的请求进行拦截,用户可以自定义拦截器来实现特定的功能.自定义拦截器必须要实现HandlerInterceptor接口 package c ...

  8. 【linux】shell代码,获取当前路径,创建文件夹

    #!/bin/bash CURRENT_PATH=`` cd $CURRENT_PATH MY_LOG=/var/log MY_DB=/var/lib/db [ ! -d $MY_LOG ] & ...

  9. bzoj2973转移矩阵构造法!

    /* 构造单位矩阵(转移矩阵) 给定n*m网格,每个格子独立按照长度不超过6的操作串循环操作 对应的操作有 0-9:拿x个石头到这个格子 nwse:把这个格子的石头推移到相邻格子 d:清空该格石子 开 ...

  10. php url函数

    1.base64_encode 与 base64_decode base64_encode(string) 表示使用 MIME base64 对数据进行编码 base64_decode(string) ...