D. Pair of Topics

题意:给定ab序列,问i<j且ai+aj>bi+bj的对数。

转化:ai-bi<-(aj-bj)
一开始拿到题目想着sort,但是发现i<j这个条件就不敢想下去了。
然后想着然后倒着遍历,c记为a-b的值.每个c先在一个vector找到小于他的个数,然后把-1*c再插入。但是vector的insert让我tle哈哈

对于i<j限制条件的转化:
如果存在ci>-cj,那么必有cj>-ci
那么对于不同的ij而言,只要找到了就算一对,答案除以二就可以处理了

实现时候把差值c放在a数组里,c数组中放a数组的相反数。对c数组进行sort,再进行lowerbound(第一个小于等于)找出小于a[i]的元素个数。注意在找到的时候可能把自己和自己计算在内,也就是相同的ij,这个时候需要减去自己。如果差值ci>0,那么必然有ci>-ci,也就是在lowerbound中多记录了一个.

int a[maxn],c[maxn];
int main(){int n=ird();LL ans=0;for(int i=1;i<=n;i++)a[i]=ird();for(int i=1;i<=n;i++){int tt=ird();a[i]-=tt;c[i]=-1*a[i];}sort(c+1,c+n+1);for(int i=1;i<=n;i++){int tt=min(n,lower_bound(c+1,c+1+n,a[i])-c);if(c[tt]>=a[i]&&a[i]!=0)tt--;if(a[i]>=0)tt--;//cout<<tt<<endl;ans+=(1ll*tt);}cout<<ans/2<<endl;return 0;
}

二分tle待改进代码:

int main(){int n=ird();for(int i=1;i<=n;i++){//c[i].id=i;c[i].a=lrd();}vector<LL> mp;for(int i=1;i<=n;i++){c[i].b=lrd();c[i].d=c[i].a-c[i].b;}LL ans=0;mp.push_back(-2e9);mp.push_back(-1*c[n].d);int ii=n-1;while(ii>=1){int l=0,r=mp.size()-1;while(l<r){int mid=(l+r+1)/2;if(mp[mid]<c[ii].d){l=mid;}else r=mid-1;}ans+=l;l=0,r=mp.size()-1;while(l<r){int mid=(l+r+1)>>1;if(mp[mid]<-1*c[ii].d){l=mid;}elser=mid-1;}mp.insert(mp.begin()+l+1,1,-1*c[ii].d);ii--;}cout<<ans<<endl;return 0;
}

cf 1324D. Pair of Topics相关推荐

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

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

  2. [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 ...

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

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

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

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

  5. Codeforces 1324D Pair of Topics

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

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

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

  7. CodeForces - 1324 D. Pair of Topics 思维+多解法

    CodeForces - 1324 D. Pair of Topics 原题地址: http://codeforces.com/contest/1324/problem/D 基本题意: 给你一个数组, ...

  8. Codeforces1324D Pair of Topics (思维 + 二分)

    题目链接: Pair of Topics 大致题意 给定两个数组a和b, 要求找出所有满足i < j 并且 ai + aj > bi + bj 的所有数对. 解题思路 我们不难想到先对等式 ...

  9. Codeforces 1324 D. Pair of Topics(二分)

    题意: 给出两组长度为 n n n 的数组 a i , b i a_i,b_i ai​,bi​,问满足 ( i < j ) a i + a j > b i + b j (i < j) ...

最新文章

  1. JVM调优:jdk1.8新生代和老年代的比值是1:2
  2. GDCM:gdcm::IPPSorter的测试程序
  3. 第十一篇 SpringBoot 2 x整合Swagger2
  4. 经典谷歌面试题-扔鸡蛋问题
  5. spring security:自定义认证成功处理器
  6. git add remote_最全的git常用命令(建议收藏)
  7. python入门必备知识_python入门基本知识
  8. uml定义的使用的关系
  9. fish-ui 一套基于vue2的ui组件库
  10. Mp3原理及文件格式解析(from)
  11. python 四元数转欧拉角
  12. 汽车EE架构 发展过程
  13. 《实况足球10》全套数值能力解析
  14. 移动内部疯传的11篇VoLTE学习笔记,看懂了你也是技术大神(二)
  15. 阿里云账号注销踩坑实践记录
  16. 华为p40 pro鸿蒙系统体验,华为P40Pro升级鸿蒙系统体验_华为P40Pro升级鸿蒙系统感受...
  17. python 通达信板块_python 适用通达信
  18. 一文入门USB设备的驱动编写方法
  19. 【观察】加速自动驾驶落地,华为OceanStor Pacific有何“独门秘籍”?
  20. Ubuntu的软件包管理 || 软硬链接 ||进线程浅述

热门文章

  1. android hdmi解码器,如何使用HDMI高清编码器进行直播
  2. 导出公众号历史文章,批量下载微信公众号数据分析
  3. React Native开发之动画(Animations)
  4. 会员注册与验证码demo 带注释(html、css、js)
  5. PAT Basic 1033. 旧键盘打字(20)(C语言实现)
  6. 【Python基础】第八篇 | 容器之列表的使用
  7. 药店微信小程序的功能
  8. 【Linux】CPSCP的说明及其区别
  9. 如何从零基础学嵌入式
  10. PHP微信公众号文章爬虫