poj 2785 4 Values whose Sum is 0
来源:互联网 发布:c图形界面编程 编辑:程序博客网 时间:2024/06/01 10:21
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).
这道题我是使用了二分查找的方式;
开始抽了,忘记了多解情况,用了STL;
#include<iostream>#include<cstdlib>#include<string>#include<algorithm>#include<cstdio>#include<cmath>#include<cstring>#include<stack>#include<queue>#include<iomanip>using namespace std;int sum1[16100000],sum2[16100000];int binary(int left,int right,int k,int t){ int i; while(left<=right) { int mid=(left+right)/2; int num=0; if(sum2[mid]==k) { num=1; for(i=mid-1;i>=0&&sum2[i]==k;--i) ++num; for(i=mid+1;i<t&&sum2[i]==k;++i) ++num; return num; } else if(sum2[mid]>k) right=mid-1; else left=mid+1; } return 0;}int main(){ int n,s[5000][4]; scanf("%d",&n); for(int i=0;i<n;++i) for(int j=0;j<=3;++j) { scanf(" %d",&s[i][j]); } int t=0; for(int i=0;i<n;++i) for(int j=0;j<n;++j) { sum1[t]=s[i][0]+s[j][1]; sum2[t++]=-(s[i][2]+s[j][3]); } sort(sum2,sum2+t); int ans=0; for(int i=0;i<t;++i) { ans+=binary(0,t,sum1[i],t); } printf("%d\n",ans); 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 二分
- ASP.NET Identity简介
- VMware虚拟机的CentOS无法上网解决
- 大数类
- hdu 1395
- Git,SVN的优缺点及适合的范围,开源项目?公司项目?
- poj 2785 4 Values whose Sum is 0
- canvas之二绘图绘图详解曲线,文字,高级应用
- PLSQL 64位的安装
- Windows安装spf13-vim配置教程
- 动态jsp生成静态html网页
- HTML5、微信、APP:创业寒冬只能选其一,该选哪个?
- Swift 2.0 函数 定义、调用、参数返回值、函数类型、嵌套函数
- App运行过程中需要更改System Setting(swift)
- 解决pandas调用scipy时缺少动态运行库的问题