找四个数的和为0

  题目大意:给定四个集合,要你每个集合选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)的更多相关文章

  1. 4 Values whose Sum is 0 POJ - 2785

    4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 29243   Accep ...

  2. 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 ...

  3. 4 Values whose Sum is 0 POJ - 2785(二分应用)

    题意:输入一个数字n,代表有n行a,b,c,d,求a+b+c+d=0有多少组情况. 思路:先求出前两个数字的所有情况,装在一个数组里面,再去求后两个数字的时候二分查找第一个大于等于这个数的位置和第一个 ...

  4. POJ 2785 4 Values whose Sum is 0(想法题)

    传送门 4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 20334   A ...

  5. POJ 2785 4 Values whose Sum is 0

    4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 13069   Accep ...

  6. 哈希-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: ...

  7. [poj2785]4 Values whose Sum is 0(hash或二分)

    4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 19322 Accepted: ...

  8. K - 4 Values whose Sum is 0(中途相遇法)

    K - 4 Values whose Sum is 0 Crawling in process... Crawling failed Time Limit:9000MS     Memory Limi ...

  9. 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< ...

随机推荐

  1. jdk的安装及配置

    前几天重新了下系统,所以JDK也要重新安装,顺带温故了安装及配置的过程,记录下来.(安装的版本是JDK1.7.0) 后面基本都是点下一步(i第一步选:开发工具),路径我改为E:/java/jdk 1. ...

  2. JAVA访问权限控制[zhuan]

    Java的访问权限控制修饰符,从最大权限到最小权限依次是:public.protected.包访问权限(默认,没有关键字)和private.对于类的访问权限只能是:public和包访问权限(但内部类可 ...

  3. 在Xcode6.4中使用OpenCV

    XCode版本6.4,OpenCV版本3.0.0 昨天我安装完OpenCV之后,兴奋地按照这篇文章Mac平台上OpenCV开发环境搭建的步骤,在XCode上建了一个Demo工程,结果编译一直不成功.一 ...

  4. laravel路由基础

    基础: 所有的laravel路由都定义在 app/Http/routes.php 这个文件里,会被框架自带加载.简单的路由会接受一个URI和一个Closure类. Route::get('foo', ...

  5. Android开源项目(二)

    第二部分 工具库 主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过 ...

  6. Java设计模式 之 代理模式

    所谓的代理模式就是为其它类或对象提供一个代理以控制对这个对象的访问.那么常见的代理有远程代理,虚拟代理,保护代理,智能代理. 1. 远程代理:为一个不同地址空间的对象提供一个本地代理对象. 2. 虚拟 ...

  7. nhibernat4.0.0.4000 bug

    //类 NHibernate.Loader.Loader 中 protected virtual string[] ResultRowAliases { get { return null; } } ...

  8. UNITY3D在线更新之道-CSlight 使用总结

    转自:http://blog.csdn.net/leonwei/article/details/39233775 最近做U3D的热更新,研究了各种方式无果后,最容易最先想到的方式就是利用c#的反射机制 ...

  9. python 列表推导式

    squares = [x**2 for x in range(10)] 相当于squares = map(lambda x: x**2, range(10)),但是更简洁和易读.傻逼才会用最古老的fo ...

  10. ExtJs xtype类型介绍

    自定义组件在定义的时候可以通过xtype配置为组件指定xtype短名称,此后创建对象可以通过xtype来创建自定义对象了,示例代码如下: Ext.define('MyApp.PressMeButton ...