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