poj2785 4 Values whose Sum is 0 双向搜索
来源:互联网 发布:淘宝商家开通花呗条件 编辑:程序博客网 时间:2024/06/09 14:02
挑战P160
题意:给你各有n个整数的四个数组,问从每个数列中取出一个数使四个数之和为0,问共有多少种取法,一个数列中有多个相同的数字时,将他们当成不同的数字看待,1<=n<=4000;
思路:完全暴力枚举O(n^4)肯定会超时,可以考虑拆成两半后枚举设四个数a+b+c+d=0,先将a+b所有组合存在一个数组中并排序O(n^2),再枚举c+d(O(n^2)),对于每个c+d,在a+b的数列中二分搜索-(c+d),总复杂度O(n^2*log n);
直接贴书上代码:
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;int a[4005],b[4005],c[4005],d[4005],cd[16000005];int main(){int n;scanf("%d",&n);for(int i=0;i<n;i++) scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]); for(int i=0;i<n;i++) for(int j=0;j<n;j++) cd[i*n+j]=c[i]+d[j];sort(cd,cd+n*n);long long ans=0;for(int i=0;i<n;i++) for(int j=0;j<n;j++){ int CD=-(a[i]+b[j]); ans+=upper_bound(cd,cd+n*n,CD)-lower_bound(cd,cd+n*n,CD); }printf("%lld\n",ans);}
0 0
- poj2785 4 Values whose Sum is 0 双向搜索
- POJ2785-4 Values whose Sum is 0【折半搜索】
- POJ2785 4 Values whose Sum is 0
- POJ2785 4 Values whose Sum is 0
- poj2785(4 Values whose Sum is 0)
- POJ2785-4 Values whose Sum is 0
- poj2785 4 Values whose Sum is 0
- POJ2785-4 Values whose Sum is 0
- POJ2785-Values whose Sum is 0
- POJ2785:4 Values whose Sum is 0(二分)
- POJ2785 4 Values whose Sum is 0 【枚举】
- POJ2785 4 Values whose Sum is 0(二分)
- POJ2785——4 Values whose Sum is 0
- Poj2785 (4 Values whose Sum is 0)
- POJ2785:4 Values whose Sum is 0(二分+暴力)
- POJ2785 -- 4 Values whose Sum is 0(折半枚举)
- POJ2785 4 Values whose Sum is 0(暴力二分查找)
- POJ2785 4 Values whose Sum is 0(二分的力量)
- Android 图片在Editext里面,不是放在editext右边 是放在里面 右侧
- 解决UnityEngine与C# System Random冲突
- 请问一下,我这个demo设置了从缓存获取数据,为什么每次运行都是从网络获取数据呢?
- Maven的安装、配置及使用入门+maven安装报错:JAVA_HOME【申明:来源于网络】
- iOS 支付宝快捷支付 请求参数错误
- poj2785 4 Values whose Sum is 0 双向搜索
- spark 2.0.1使用过程中常见问题汇总
- listview里面imageview的监听
- 如何在mac的finder加入使用shell打开当前目录的快捷图标?
- iOS7 和Xcode 5相关代码资源及示例
- 思科VPP源码分析(内存管理)
- [ffmpeg]如何同时解码多路视频
- swift使用cocoapods导入oc三方库
- android,view的重绘