Divide and conquer:4 Values whose Sum is 0(POJ 2785)

题目大意:给定四个集合,要你每个集合选4个数字,组成和为0
这题是3977的简单版,只要和是0就可以了
#include <iostream>
#include <algorithm>
#include <functional>
#define MAX 4001 using namespace std; typedef long long LL_INT;
static LL_INT list[][MAX], set_sum1[MAX*MAX]; LL_INT *Binary_Lower_Bound(int &, LL_INT);
LL_INT *Binary_Upper_Bound(int &, LL_INT);
LL_INT solve(int &,int &); int main(void)
{
int list_contian, sum_comb;
LL_INT ans; while (~scanf("%d", &list_contian))
{
for (int i = ; i < list_contian; i++)
scanf("%lld%lld%lld%lld", &list[][i], &list[][i], &list[][i], &list[][i]); sum_comb = ;
for (int i = ; i < list_contian; i++)//把第一张和第二张表的总数枚举出来
for (int j = ; j < list_contian; j++)
set_sum1[sum_comb++] = list[][i] + list[][j]; sort(set_sum1, set_sum1 + sum_comb);
ans = solve(list_contian, sum_comb);
printf("%lld\n", ans);
}
return EXIT_SUCCESS;
} LL_INT solve(int &list_contain, int &sum_comb)
{
LL_INT tmp_sum, ans = ;
int pos1, pos2; for (int i = ; i < list_contain; i++)
{
for (int j = ; j < list_contain; j++)
{
tmp_sum = -list[][i] - list[][j];
pos1 = Binary_Upper_Bound(sum_comb, tmp_sum) - set_sum1;
pos2 = Binary_Lower_Bound(sum_comb, tmp_sum) - set_sum1;
ans += pos1 - pos2;
}
}
return ans;
} LL_INT *Binary_Lower_Bound(int &sum_comb, LL_INT val)
{
int lb = , mid, count1 = sum_comb, count2;
while (count1 > )
{
count2 = count1 >> ;
mid = lb + (count1 >> );
if (set_sum1[mid] < val)
{
lb = ++mid;
count1 -= count2 + ;
}
else count1 = count2;
}
return &set_sum1[lb];
} LL_INT *Binary_Upper_Bound(int &sum_comb, LL_INT val)
{
int lb = , mid, count1 = sum_comb, count2;
while (count1 > )
{
count2 = count1 >> ;
mid = lb + (count1 >> );
if (set_sum1[mid] <= val)
{
lb = ++mid;
count1 -= count2 + ;
}
else count1 = count2;
}
return &set_sum1[lb];
}

Divide and conquer:4 Values whose Sum is 0(POJ 2785)的更多相关文章
- 4 Values whose Sum is 0 POJ - 2785
4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 29243 Accep ...
- 4 Values whose Sum is 0 POJ 2785 (折半枚举)
题目链接 Description The SUM problem can be formulated as follows: given four lists A, B, C, D of intege ...
- 4 Values whose Sum is 0 POJ - 2785(二分应用)
题意:输入一个数字n,代表有n行a,b,c,d,求a+b+c+d=0有多少组情况. 思路:先求出前两个数字的所有情况,装在一个数组里面,再去求后两个数字的时候二分查找第一个大于等于这个数的位置和第一个 ...
- POJ 2785 4 Values whose Sum is 0(想法题)
传送门 4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 20334 A ...
- POJ 2785 4 Values whose Sum is 0
4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 13069 Accep ...
- 哈希-4 Values whose Sum is 0 分类: POJ 哈希 2015-08-07 09:51 3人阅读 评论(0) 收藏
4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 17875 Accepted: ...
- [poj2785]4 Values whose Sum is 0(hash或二分)
4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 19322 Accepted: ...
- K - 4 Values whose Sum is 0(中途相遇法)
K - 4 Values whose Sum is 0 Crawling in process... Crawling failed Time Limit:9000MS Memory Limi ...
- UVA 1152 4 Values whose Sum is 0 (枚举+中途相遇法)(+Java版)(Java手撕快排+二分)
4 Values whose Sum is 0 题目链接:https://cn.vjudge.net/problem/UVA-1152 ——每天在线,欢迎留言谈论. 题目大意: 给定4个n(1< ...
随机推荐
- gulp进阶构建项目由浅入深
gulp进阶构建项目由浅入深 阅读目录 gulp基本安装和使用 gulp API介绍 Gulp.src(globs[,options]) gulp.dest(path[,options]) gulp. ...
- vs2010 中无法打开 源文件 "stdafx.h" 未定义标识符 “xxx”
解决方案: 项目属性->配置属性->C/C++->常规->附加包含目录->$(ProjectDir)
- 2015年11月26日 Java基础系列(六)正则表达式Regex
package com.demo.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @autho ...
- Jquery 操作IFrame
使用jquery操作iframe 1. 内容里有两个ifame <iframe id="leftiframe"...</iframe> <iframe id ...
- linq和lanmbda表达式比较解析
- Hanoi问题
#include<stdio.h>int main(){ int m; void hanoi(int n,char x,char y,char z); printf("input ...
- 天翼宽带政企网关B2-1P 如何获得超级管理员账号?
RT 用useradmin没办法做NAT,想进telecomadmin里面看看,,,,,并且已经使用过nE7jA%5m这个密码登录,没有用! 求办法!!! 最佳答案 查找超级管理员密码方法: 1.用光 ...
- php综合应用
php面试题之五--PHP综合应用(高级部分) 五.PHP综合应用 1.写出下列服务的用途和默认端口(新浪网技术部) ftp.ssh.http.telnet.https ftp:File Transf ...
- 用 FragmentManager 替换时使用 GoogleMaps 崩溃 app
我要用下面的代码来加载的片段的项已被选定在 NavigationDrawer,然而 MapFragment 包含它里面的谷歌地图片段和它崩溃后试图打开它第二次. 这里是我使用的代码: @Overrid ...
- Android内存性能优化(内部资料总结) eoe转载
刚入门的童鞋肯能都会有一个疑问,Java不是有虚拟机了么,内存会自动化管理,我们就不必要手动的释放资源了,反正系统会给我们完成.其实Java中没有指针的概念,但是指针的使用方式依然存在,一味的依赖系统 ...