例题8-3:和为0的4个值(中途相遇法)
来源:互联网 发布:淘宝秒杀助手mac 编辑:程序博客网 时间:2024/06/05 03:13
例题8-3:和为0的4个值
用中途相遇法的思想来解题。分别枚举两边,和直接暴力枚举四个数组比可以降低时间复杂度。
这里用到一个很实用的技巧:
求长度为n的有序数组a中的数k的个数num?
num=upper_bound(a,a+n,k)-lower_bound(a,a+n,k);
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<string>#include<cmath>#include<set>#include<queue>#include<map>#include<stack>#include<vector>#include<list>#include<deque>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;const double eps = 1e-6;const int INF = 1 << 30;int T, n, m;int a[4005], b[4005], c[4005], d[4005];int ab[16001000], cd[16001000];int main(){ scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i = 0; i < n; i++) { scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]); } int tot = 0, ans = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { ab[tot] = a[i] + b[j]; cd[tot++] = c[i] + d[j]; } } sort(ab, ab + tot); for(int i = 0; i < tot; i++) ans += upper_bound(ab, ab + tot, -cd[i]) - lower_bound(ab, ab + tot, -cd[i]); cout<<ans<<endl; if(T)cout<<endl; } return 0;}
阅读全文
0 0
- 例题8-3:和为0的4个值(中途相遇法)
- 中途相遇法,哈希技术(和为0的4个值,uva 1152)
- uva 1152 和为0的4个值(中途相遇法)
- Uva1152 4 Values whose Sum is 0 【中途相遇+二分】【例题8-3】
- 例题25(侏罗纪)(中途相遇法)!
- Uva1608 Non-boring sequences 【分治+中途相遇】【例题8-16】
- 例题8-3 和为0的4个值 UVa1152
- codeforces808E(超大背包的解决问题,中途相遇法)
- uva1152 4 Values whose Sum is 0(中途相遇法)
- UVA 1152 --4 Values whose Sum is 0(枚举--中途相遇法)
- 中途相遇法(侏罗纪,LA 2965)
- poj2549 Sumsets(中途相遇法)
- uva10125 (中途相遇法)
- 中途相遇法
- 例题 8-2 和为0的4个值 UVa 1152
- 例题 8-3 UVA - 1152 4 Values whose Sum is 0(和为0的4个值)(二分枚举)
- 例题8-3 和为0的4个值(4 Values Whose Sum is Zero, ACM/ICPC SWERC 2005, UVa 1152)
- (白书训练计划)UVa 1152 4 Values whose Sum is 0(中途相遇法。。)
- arrayAdapter.notifyDataSetChanged()
- spring源码与架构分析——Spring框架的一些理解
- 字符流(缓冲区问题)
- BIG-IP系统iRules基本概念_v11.6.1
- vue.js实现简单轮播
- 例题8-3:和为0的4个值(中途相遇法)
- 汉诺塔问题(递归)
- 用python爬虫爬取moodle全部课件并下载到本地
- java 一维数组求最大值最小值
- (DOM艺术)图片仓库改进一:完全分离
- HDU 3874 Necklace
- set action为Call时startActivity(intent);出现红线错误的解决方法
- maven核心,pom.xml详解
- 利用Java代码实现图片的下载: