题意

给你长度为n四个数列,每个数列选一个数使总和为4,有多少种选法(不同选法仅当起码有一个元素的下标不同)

输入

第一行,n

下面n行,每行四个数,代表ai,bi,ci,di

输出

选法数量

样例输入

  1. 6
  2. -45 22 42 -16
  3. -41 -27 56 30
  4. -36 53 -37 77
  5. -36 30 -75 -46
  6. 26 -38 -10 62
  7. -32 -54 -6 45

样例输出

5

分析

1、傻逼算法:四重枚举 O(n4)

2、优化一点的傻逼算法:三重枚举+一重二分O(n3logn)

3、比较优化算法:枚举c和d组成的数生成e,e排序,再枚举a,b,与e配对O(n2logn)

代码

  1. #include<set>
  2. #include<map>
  3. #include<queue>
  4. #include<stack>
  5. #include<cmath>
  6. #include<cstdio>
  7. #include<cstring>
  8. #include<iostream>
  9. #include<algorithm>
  10. #define RG register ll
  11. #define rep(i,a,b) for(RG i=a;i<=b;++i)
  12. #define per(i,a,b) for(RG i=a;i>=b;--i)
  13. #define ll long long
  14. #define inf (1<<29)
  15. #define maxn 4005
  16. using namespace std;
  17. ll n,cnt,ans;
  18. ll a[maxn],b[maxn],c[maxn],d[maxn],e[maxn*maxn];
  19. inline ll read()
  20. {
  21. ll x=,f=;char c=getchar();
  22. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  23. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  24. return x*f;
  25. }
  26.  
  27. int main()
  28. {
  29. n=read();
  30. rep(i,,n) a[i]=read(),b[i]=read(),c[i]=read(),d[i]=read();
  31. rep(i,,n)rep(j,,n) e[++cnt]=c[i]+d[j];
  32. sort(e+,e++cnt);
  33. rep(i,,n)
  34. rep(j,,n)
  35. {
  36. ll fd=-a[i]-b[j];
  37. ans+=upper_bound(e+,e++cnt,fd)-lower_bound(e+,e++cnt,fd);
  38. }
  39. cout<<ans;
  40. return ;
  41. }

4 Values whose Sum is 0 [POJ2785] [折半搜索]的更多相关文章

  1. POJ 2785 4 Values whose Sum is 0(折半枚举+二分)

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

  2. Day3-J-4 Values whose Sum is 0 POJ2785

    The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute ...

  3. poj 2785 4 Values whose Sum is 0(折半枚举(双向搜索))

    Description The SUM problem can be formulated . In the following, we assume that all lists have the ...

  4. POJ - 2785 - 4 Values whose Sum is 0 - 二分折半查找

    2017-08-01 21:29:14 writer:pprp 参考:http://blog.csdn.net/piaocoder/article/details/45584763 算法分析:直接暴力 ...

  5. 折半枚举(双向搜索)poj27854 Values whose Sum is 0

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

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

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

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

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

  8. POJ 2785 4 Values whose Sum is 0

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

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

随机推荐

  1. P2518 [HAOI2010]计数

    题目链接 \(Click\) \(Here\) 很好很妙的一个题目. 其实可以生成的数字,一定是原数的一个排列,因为\(0\)被放在前面就可以认为不存在了嘛~.也就是说现在求的就是全排列中所有小于该数 ...

  2. JAVA字符串

    字符串   1. 字符串 1.1 字符串概述和特点 java.lang.String类代表字符串. API当中说:Java 程序中的所有字符串字面值(如 "abc" )都作为此类的 ...

  3. Word中页眉、页码设置

    本篇博文简单介绍一下文档中页眉.页码设置的问题 一个项目中,封面一般不需要页眉,要关闭首页的页眉,可以在"页眉和页脚工具->选项->首页不同"可以如下设置: 图 1关闭 ...

  4. Collections.unmodifiableMap(Map map)

    public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)返回指定映射 ...

  5. sublime text3格式化html,css,js代码

    需要安装HTML/CSS/JS prettify插件. 安装步骤:首选项 -> Package Control -> Install Package -> HTML-CSS-JS P ...

  6. centos7.2 环境下两个数据库的安装部署

    首先假如服务器上已经有一个 数据库mysql5.6.29,端口是3306. 接下来在安装一个mysql数据库,端口是3307的. 一:创建mysql编译目录 mkdir /usr/local/mysq ...

  7. Spring系列(四) 面向切面的Spring

    除了IOC外, AOP是Spring的另一个核心. Spring利用AOP解决应用横切关注点(cross-cutting concern)与业务逻辑的分离, 目的是解耦合. 横切关注点是指散布于代码多 ...

  8. liunx系统下调整Swap分区大小

    作者:邓聪聪 添加swap交换空间的步骤如下:第一步:确保系统中有足够的空间来用做swap交换空间,准备在一个独立的文件系统中添加一个swap交换文件,在/tmp中添加1G的swap交换文件第二步:添 ...

  9. List的分组,求和,过滤操作

    package ---; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /* ...

  10. Java集合图谱

    比较 是否有序 是否允许元素重复 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉排序树) Map AbstractM ...