POJ 2785:4 Values whose Sum is 0
来源:互联网 发布:kakaotalk电脑版 mac 编辑:程序博客网 时间:2024/06/07 11:28
4 Values whose Sum is 0
Time Limit: 15000MS Memory Limit: 228000KTotal Submissions: 19331 Accepted: 5783Case Time Limit: 5000MS
Description
The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A x B x C x D are such that a + b + c + d = 0 . In the following, we assume that all lists have the same size n .
Input
The first line of the input file contains the size of the lists n (this value can be as large as 4000). We then have n lines containing four integer values (with absolute value as large as 228 ) that belong respectively to A, B, C and D .
Output
For each input file, your program has to write the number quadruplets whose sum is zero.
Sample Input
6-45 22 42 -16-41 -27 56 30-36 53 -37 77-36 30 -75 -4626 -38 -10 62-32 -54 -6 45
Sample Output
5
Hint
Sample Explanation: Indeed, the sum of the five following quadruplets is zero: (-45, -27, 42, 30), (26, 30, -10, -46), (-32, 22, 56, -46),(-32, 30, -75, 77), (-32, -54, 56, 30).
题目意思:
有abcd四个数组,各抽取一个数使得四个数之和为0;问共有多少种取法。
解题思路:
通过枚举后两列的所有可能的值,然后再用折半枚举算出所需要的ab中的和为0的值.
源代码:
#include<iostream>#include<bits/stdc++.h>#define N 4005using namespace std;int a[N],b[N],c[N],d[N];int cd[N*N],t;long long ans;void work(){ ans=0; for(int i=0;i<t;i++) for(int j=0;j<t;j++) cd[i*t+j]=c[i]+d[j]; sort(cd,cd+t*t); for(int i=0;i<t;i++) for(int j=0;j<t;j++) { int ab=-(a[i]+b[j]); //upper_bound返回的是值为ab的元素可以插入的最后一个位置(上界) (可以认为大于ab的位置) //lower_bound返回的是键值为ab的元素可以插入的位置的第一个位置(下界)。(可以认为大于或等于ab的位置) ans+=upper_bound(cd,cd+t*t,ab)-lower_bound(cd,cd+t*t,ab); } printf("%lld\n",ans);}int main(){ scanf("%d",&t); for(int i=0;i<t;i++) scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]); work(); return 0;}
阅读全文
0 0
- POJ 2785 Values whose Sum is 0
- 4 Values whose Sum is 0 POJ
- 4 Values whose Sum is 0 POJ
- 4 Values whose Sum is 0 POJ
- 4 Values whose Sum is 0 POJ
- POJ 2785 4 Values whose Sum is 0
- POJ 2785 4 Values whose Sum is 0 二分
- POJ 2785:4 Values whose Sum is 0
- POJ 2785(4 Values whose Sum is 0)
- poj 2785 4 Values whose Sum is 0
- poj 2785 4 Values whose Sum is 0 (二分+枚举)
- poj 2785 4 Values whose Sum is 0(hash)
- POJ 2785: 4 Values Whose Sum is 0
- poj 2785 4 Values whose Sum is 0
- POJ 2785 4 Values whose Sum is 0 Hash!
- poj 2785 4 Values whose Sum is 0 哈希
- POJ 2785 4 Values whose Sum is 0(二分)
- POJ 2785 4 Values whose Sum is 0 二分
- 【笨鸟先飞】android重新学习日记1---布局
- 使用Sense浏览器插件操作ElasticSearch CRUD
- Piggy-Bank
- 给控件设置背景颜色
- C语言程序里何时用分号?
- POJ 2785:4 Values whose Sum is 0
- Java并发编程(1)——进程与线程
- springboot(三)配置文件
- 常见oracle数据类型及其在java中的对应类型
- Android 实现点击时按钮颜色改变
- 微信分享页面到朋友圈
- Z
- 单独编译安装php的mysqli,pdo_mysql,mysqlnd扩展
- Linux下安装tar.gz类型的jdk,并配置环境变量