D - Pair of Topics

思路:

这个题需要一点思路,ai+aj>bi+bj可以转换成ai-bi+aj-bj>0,也就是c[i]=a[i]-b[i],只需要找c[i]+c[j]大于0

一开始的想法是枚举i和j,但是很显然会超时

a和b数组内部的顺序不会影响正确答案个数,所以可以排序

从两头缩进,如果a[r]加上比较小的a[l]大于0,那么就有l-r种方法,因为比a[l]大的数加上a[r]也会大于0,这样就能保证方法没有遗漏

当a[l]+a[r]不大于0的时候,说明a[l]太小了,l向右移来找一个更大的a[l]

代码:

#include<iostream>
#include<algorithm>
#include<string> using namespace std; long long a[200005], b[200005], c[200005];
int main(){ long long n, sum = 0;
scanf("%lld", &n);
for (int i = 0; i < n; i++)
scanf("%lld", &a[i]);
for (int i = 0; i < n; i++)
scanf("%lld", &b[i]);
for (int i = 0; i < n; i++)
c[i] = a[i] - b[i];
sort(c, c + n);
int flag, cnt;
flag = 0; cnt = n - 1;
while (1){
if (flag == cnt)
break;
if (c[flag] + c[cnt]>0){
sum += (cnt-flag);
cnt--;
}
else{
flag++;
}
}
printf("%lld", sum); return 0;
}

最新文章

  1. Git 获取文件操作
  2. Struts1.x 中的 Validate 框架
  3. 消除a标签点击后产生的虚线框
  4. mysql 基础语法
  5. VS2010 发布web项目 问题
  6. linux打开文件数量的查看方法
  7. Testing Multi-Tenancy on a Local Machine
  8. 时间日期Date类型
  9. 详解ARM的AMBA设备中的 DMA设备PL08X的Linux驱动
  10. 第 2 章 代理模式【Proxy Pattern】
  11. 人一生必看的100部电影(全球最佳电影排名榜TOP250)
  12. select options常用操作
  13. MyEclipse修改
  14. 在IT公司,project manager 基本上和秘书,助理什么的差不多
  15. php实现echo json_encode正确显示汉字
  16. Linux时间子系统之(十三):Tick Device layer综述
  17. ES 08 - 创建、查看、修改、删除、关闭Elasticsearch的index
  18. vuejs之v-if-ajax异步请求数据遇到的坑
  19. 对象存储到session中
  20. vscode 不显示指定后缀名pyc文件

热门文章

  1. DNA
  2. html 引入 js 代码的几种方式
  3. C-06\数组
  4. UBUNTU16.04卸载安装protobuf
  5. 学习ASP.NET Core Blazor编程系列二十六——登录(5)
  6. Android中drawable和mipmap到底有什么区别
  7. LAMP环境搭建——最详细的手工编译
  8. Os-ByteSec
  9. CenterOS7上搭建RabbitMQ集群
  10. Java开发中要避免的坑和一些代码优化技巧