1324D-Pair of Topics

Description

Link

Analysis

题意概述

给定两个长度为 n n n 的序列 { a n } , { b n } \{a_n\},\{b_n\} {an​},{bn​}( 2 ≤ n ≤ 2 × 1 0 5 , 1 ≤ a i ≤ 1 0 9 , 1 ≤ b i ≤ 1 0 9 2\le n\le 2\times10^5,1\le a_i\le10^9,1\le b_i\le10^9 2≤n≤2×105,1≤ai​≤109,1≤bi​≤109),求满足 a i + a j > b i + b j a_i+a_j>b_i+b_j ai​+aj​>bi​+bj​ 的数对 ( i , j ) (i,j) (i,j) 的个数(其中 i < j i<j i<j)

分析

尽量将下标相同的元素联系在一起,考虑移项,得约束条件: ( a i − b i ) + ( a j − b j ) > 0 (a_i-b_i)+(a_j-b_j)>0 (ai​−bi​)+(aj​−bj​)>0

令 c i = a i − b i c_i=a_i-b_i ci​=ai​−bi​,类比在有序序列中寻找和为定值的数的方法( l e e t c o d e leetcode leetcode 的 A + B A+B A+B 问题),将 c i c_i ci​ 升序排序,依次从下一个位置向后二分大于当前值的负值的数的下标,并从 n n n 中减去,得到对于单个 i i i 的答案,累加即可

(对于 { c n } \{c_n\} {cn​} 在排序后二分得到的数对,是否满足 i < j i<j i<j:只需要使得下标不出现重复、数对不重复计算即可,同一数对的下标 i , j i,j i,j 必然存在确定的大小关系)

此外,数对个数可能超过 i n t int int 的表示范围

Code

#include <iostream>
#include <cstring>
#include <algorithm>
#define LL int64_tusing namespace std;constexpr const int N = 2e5 + 10;int a[N], b[N], c[N], n;
LL ans;int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);cin >> n;for(int i = 1; i <= n; i++)cin >> a[i];for(int i = 1; i <= n; i++){cin >> b[i];c[i] = a[i] - b[i];}sort(c + 1, c + 1 + n);for(int i = 1; i <= n - 1; i++){int pos = upper_bound(c + i + 1, c + n + 1, -c[i]) - (c + 1);ans += n - pos;}cout << ans;return 0;
}

Tag

基础的二分查找

CodeForces 1K-1400R-1324D相关推荐

  1. [Codeforces Round #627]1324D - Pair of Topics[二分]

    1324D - Pair of Topics[二分] time limit per test memory limit per test input output 2 seconds 256 mega ...

  2. CodeForces - 1324D Pair of Topics (分治+排序)

    CodeForces - 1324D Pair of Topics 题目大意: 这题大意ai+aj>bi+bj全在这个式子上,就问你满足的组合有几种, 题目分析: 整理一下,得到(ai-bi)+ ...

  3. Codeforces 1324D Pair of Topics

    题目链接:https://codeforces.com/contest/1324/problem/D 题目描述 有两个长度为 n 的数组 A, B.问有多少对 (i,j) 满足 i < j 且 ...

  4. [codeforces 1324D] Pair of Topics 分而治之+排列组合

    Codeforces Round #627 (Div. 3)   比赛人数6434 [codeforces 1324C]  Frog Jumps   一直向右+边界处理 总目录详见https://bl ...

  5. Codeforces 1324D(红黑树+求指定区间中大于指定值的个数)

    代码: #include <bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> #define IOS ios::sy ...

  6. CodeForces - 1324D Pair of Topics(二分或双指针)

    题意:略 题记: 做法一:二分 #include<bits/stdc++.h>using namespace std; typedef long long ll; const int N= ...

  7. CodeForces - 1324D Pair of Topics(思维+二分)

    题目链接:https://vjudge.net/contest/362265#problem/D The next lecture in a high school requires two topi ...

  8. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  9. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  10. CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换,清晰易懂)

    CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换)   首先一共有四个操作,第一个和第四个都是线段树的基本操作,直接用线段树实现.      第 ...

最新文章

  1. sql server存储过程中SELECT 与 SET 对变量赋值的区别
  2. 积分商城如何梳理思路和进行设计
  3. Redis 命令--Redis列表(List))
  4. EJBCA 6 通过调用WebService接口增加用户并获取证书
  5. MATLAB工具箱介绍
  6. bean覆盖 springboot_SpringBoot中如何进行Bean配置
  7. apache phoenix 入门_实现Phoenix入门
  8. 【蓝桥杯单片机】IIC通讯协议与EEPROM(AT24C02)(官方驱动源码改写)
  9. ArcGIS js api 手动构建FeatureLayer
  10. 远程命令,代码执行漏洞原理
  11. 蔚来汽车为国人长脸,牌照和品牌将是今后的两大重点
  12. 边缘计算与嵌入式系统
  13. matlab arcsin 弧度,角度换算弧度(角度换算弧度计算器)
  14. 如果你想成为一名黑客
  15. 机器学习算法工程师面试经历
  16. 十二月十三号作业驱动作业
  17. c语言指数爆炸月球,指数爆炸带来的震撼
  18. Django项目实战——6—(退出登录、判断用户是否登录、QQ登录、QQ登录工具QQLoginTool、本机绑定域名)
  19. kaggle 泰坦尼克 高分 预测
  20. leetcode|剑指offter|面试题4:二维数组中的查找

热门文章

  1. 网站如何锁定用户,超级浏览器有办法解决吗?
  2. 优秀的海外住宅代理该从哪几个角度判断?
  3. 对[我所认识的BIOS]系列 -- CPU的第一条指令 一文扩充(III):从源代码到 FFS 文件
  4. (原创)android6.0系统 PowerManager深入分析(很具体)
  5. 无刷电机和有刷电机对比
  6. layui使用表格数据,json嵌套数据解决
  7. 用HTML+CSS实现百度静态页面
  8. docker 清理磁盘
  9. 抖音巨量千川是什么?和飞瓜智投有什么不同?后者功能更强大!
  10. 微信小程序一 全局变量/js使用详解