luoguP1102-双指针
题目链接:P1102 A-B 数对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
利用单调性求解
双指针解法:排序构造出区间单调,则若存在目标值B,B在序列中一定为连续区间,此时通过双指针 l 和 r ,此时维护一段区间:有S[L]大于S[I] -C,S[R]大于等于S[I] - C,此时我们枚举每一位,若存在A-B=C关系,则将对应目标区域加入答案中,反之则遍历下一位
题目:
出题是一件痛苦的事情!
相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!
题目描述
给出一串正整数数列以及一个正整数 C,要求计算出所有满足A−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。
输入格式
输入共两行。
第一行,两个正整数 N,C。
第二行,N 个正整数,作为要求处理的那串数。
输出格式
一行,表示该串正整数中包含的满足 A−B=C 的数对的个数。
输入输出样例
4 1
1 1 2 3
3
说明/提示
对于 75% 的数据,1≤ N ≤ 2000。
对于 100%的数据,1≤ N ≤ 2×1e5,0≤ ai < 2^30,1 ≤ C < 2^30。
2017/4/29 新添数据两组
ACcode:
#include <bits/stdc++.h> using namespace std; const int N = 2 * 1e5 + 10; typedef long long LL; int n, c, s[N];
LL sum; int main()
{
cin >> n >> c;
for(int i = 0; i < n; ++ i) cin >> s[i]; sort(s, s + n); int l = 0, r = 0;
for(int i = 0; i < n; ++ i) {
while(s[l] < s[i] - c && l < n) ++ l;/
while(s[r] <= s[i] - c && r < n) ++ r;
if(s[i] - s[l] == c) sum += r - l;
}
cout << sum << endl;
return 0;
}
当时解法:用额外数组计算枚举数组中每位数字出现的次数,遍历每一位,若满足A-B=C,则把对应的值加入答案中,40分
这里二分存sum爆int了,双指针为什么可过?
luoguP1102-双指针的更多相关文章
- [LeetCode] #167# Two Sum II : 数组/二分查找/双指针
一. 题目 1. Two Sum II Given an array of integers that is already sorted in ascending order, find two n ...
- [LeetCode] #1# Two Sum : 数组/哈希表/二分查找/双指针
一. 题目 1. Two SumTotal Accepted: 241484 Total Submissions: 1005339 Difficulty: Easy Given an array of ...
- Leetcode解题思想总结篇:双指针
Leetcode解题思想总结篇:双指针 1概念 双指针:快慢指针. 快指针在每一步走的步长要比慢指针一步走的步长要多.快指针通常的步速是慢指针的2倍. 在循环中的指针移动通常为: faster = f ...
- Longest Substring Without Repeating Characters - 哈希与双指针
题意很简单,就是寻找一个字符串中连续的最长包含不同字母的子串. 其实用最朴素的方法,从当前字符开始寻找,找到以当前字符开头的最长子串.这个方法猛一看是个n方的算法,但是要注意到由于字符数目的限制,其实 ...
- leetcode 15. 3Sum 双指针
题目链接 给n个数, 找出三个数相加结果为0的所有的组, 不可重复. 用双指针的思想,O(n^2)暴力的找, 注意判重复. class Solution { public: vector<vec ...
- hdu_5806_NanoApe Loves Sequence Ⅱ(双指针)
题目链接:hdu_5806_NanoApe Loves Sequence Ⅱ 题意: 给你一段数,问你有多少个区间满足第K大的数不小于m 题解: 直接双指针加一下区间就行 #include<cs ...
- BZOJ_2679_[Usaco2012 Open]Balanced Cow Subsets _meet in middle+双指针
BZOJ_2679_[Usaco2012 Open]Balanced Cow Subsets _meet in middle+双指针 Description Farmer John's owns N ...
- BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针
BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针 Description Farmer John's N cows (1 <= N <= 100,000) ...
- BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针
BZOJ_4653_[Noi2016]区间_线段树+离散化+双指针 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间, ...
- (双指针 二分) leetcode 167. Two Sum II - Input array is sorted
Given an array of integers that is already sorted in ascending order, find two numbers such that the ...
随机推荐
- 树-BST基本实现
之前的数组, 栈, 链表, 队列等都是顺序数据结构, 这里来介绍一个非顺序数据结构, 树. 树在处理有层级相关的数据时非常有用, 还有在存储数据如数据库查询实现等场景也是高频使用. 作为一种分层数据的 ...
- 字节大模型应用开发框架 Eino 全解(一)|结合 RAG 知识库案例分析框架生态
前言 大家好,这里是白泽,Eino 是字节开源的 Golang 大模型应用开发框架,诸如豆包.扣子等 Agent 应用或工作流都是借助这个框架进行开发. 我将通过<字节大模型应用开发框架 Ein ...
- AI模型的回调能力的理解和实现
前言 BigTall最近把RAG和Agent的原理想通了,对于"一切都是提示词"的理解又更多了一些.本文把我的理解大致整理了一下,给出BigTall自己的一个实验.希望能够对大家有 ...
- 5 easybr指纹浏览器内存修改教程
目的 navigator.deviceMemory可以暴露设备的物理内存和运行状态,被用于设备唯一性识别或判断设备等级. 通过伪造这类信息,可以增强防关联.防追踪能力. easybr指纹浏览器提供演示 ...
- Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld has been compiled by a more
一个新手容易遇到的问题,电脑上装了多个版本的java,比如8和11,导致javac和java的版本不一样 在控制面板里将其他版本卸载,留个8就行 然后在环境变量里重新配置一下就ok
- 一个 Bean 就这样走完了它的一生之 Bean 的出生
生命周期流程 Spring 中的一个 Bean 从被创建到被销毁,需要经历很多个阶段的生命周期,下图是一个 Bean 从创建到销毁的生命周期流程: 在 Bean 的各个生命周期流程点,Spring 都 ...
- 自定义Marix的自定义动画,支持缓动动画属性
最近用画布的MatrixTransForm做变换,需要用Matrix做动画处理,网上冲浪找了一圈,没有找出好的解决方法 Stack Overflow 给出了一部分的解决方法,但是不支持缓动函数,貌似不 ...
- Java 删除目录下相同文件
摘要:通过MD5算法对指定目录下的文件去重. 背景 之前写了一篇博客<Java判断两个文件是否相同>,介绍如何校验两个文件内容是否相同,但是,不适用于对目录下文件去重的场景,故对其进行 ...
- 洛谷P1333 瑞瑞的木棍 字符串 最短路
说在前面 用M↓写的第一篇题解,欢迎提出意见. 题目描述 瑞瑞有一堆的玩具木棍,每根木棍的两端分别被染上了某种颜色,现在他突然有了一个想法,想要把这些木棍连在一起拼成一条线,并且使得木棍与木棍相接触的 ...
- Go中的map和指针
本文参考:https://www.liwenzhou.com/posts/Go/08_map/ MAP(映射) Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现.(类似于Pyth ...