二分搜索-poj2785
题目链接:http://poj.org/problem?id=2785
题目大意:要求输入A,B,C,D四个数组,从每个数组中分别取出一个数来相加,求出相加后 和为0 总共有多少种加法。
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN=;
int A[MAXN],B[MAXN],C[MAXN],D[MAXN];
int AB[MAXN*MAXN];
int n;
int main()
{
long long res=;
while(~scanf("%d",&n))
{
for(int i=;i<n;i++)
{
scanf("%d%d%d%d",&A[i],&B[i],&C[i],&D[i]);
}
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
AB[i*n+j]=A[i]+B[j];//现将数组A+数组B中的元素相加,然后在对数组C,D进行相加
}
}
sort(AB,AB+n*n);
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
int cd=-(C[i]+D[j]);
//此处将cd的值设置为-(C[i]+D[j]),可以用AB数组中的数与cd直接相加,便于判断二者之和是否为0
res+=upper_bound(AB,AB+n*n,cd)-lower_bound(AB,AB+n*n,cd);
/*upper_bound()与lower_bound()函数的用法参见 https://blog.csdn.net/jadeyansir/article/details/77015626
找到AB数组中第一个比cd大的数的位置pos1,减去AB数组中第一个比cd小的数的位置pos2,如果pos1-pos2=1,则说明
在AB数组中,处在pos1和pos2之间的数就是 cd ,详细参考下图,如当cd=-72时,pos1=9,pos2=8,符合条件,res加1;
*/
}
}
printf("%lld\n",res);
}
return ;
}

二分搜索-poj2785的更多相关文章
- [LeetCode] Largest BST Subtree 最大的二分搜索子树
Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest mea ...
- hdu 2199 Can you solve this equation?(二分搜索)
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- hdu 2199:Can you solve this equation?(二分搜索)
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 二分搜索 UVALive 6076 Yukari's Birthday (12长春K)
题目传送门 题意:问使得sum (k^i) = n || n -1 (1 <= i <= r) 的min (r*k)组合的r和k 分析:r的最大不会超过40,枚举r,二分搜索k.注意会爆 ...
- hdu 1075 二分搜索
还是写一下,二分搜索好了 这道题开数组比较坑... 二分,需要注意边界问题,例如:左闭右闭,左闭右开,否则查找不到or死循环 先上AC代码 #include<iostream> #incl ...
- K Best(最大化平均数)_二分搜索
Description Demy has n jewels. Each of her jewels has some value vi and weight wi. Since her husband ...
- HDU 2852 KiKi's K-Number(树状数组+二分搜索)
题意:给出三种操作 0 e:将e放入容器中 1 e:将e从容器中删除,若不存在,则输出No Elment! 2 a k:搜索容器中比a大的第k个数,若不存在,则输出Not Find! 思路:树状数组+ ...
- nyoj914Yougth的最大化(二分搜索 + 贪心)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗 ...
- poj 2976 Dropping tests (二分搜索之最大化平均值之01分数规划)
Description In a certain course, you take n tests. If you get ai out of bi questions correct on test ...
随机推荐
- pyqt5 鼠标操作
#资料 http://blog.sina.com.cn/s/blog_6483fa330102xo6w.html import sysfrom PyQt5.QtWidgets import QAppl ...
- python - 类的内置 attr 方法
类的内置 attr 方法 #类的内置 attr 方法: # __getattr__ # __setattr__ # __delattr__ # __getattr__ #到调用一个类不存在数参数时,将 ...
- 【逆向知识】动态调试技巧-C++代码逆向
1.C++类代码的特点 寄存器ECX传参时一般用作this指针(对象地址)或是计数器. 有ecx传参的call,是成员函数,构造函数,析构函数 能访问成员变量的函数都会有ecx传参 静态函数.全局函数 ...
- Caching漫谈--关于Cache的几个理论
如今缓存是随处可见了,如果你的程序还没有使用到缓存,那可能是你的程序并发量很低,或对实时性要求很低.我们公司的ERP在显示某些报表时,每次打开都需要花上几分钟的时间,假如搜索引擎也是这么慢,我想这家搜 ...
- 蓝牙Bluetooth技术手册规范下载【转】
蓝牙Bluetooth技术手册规范下载 http://www.crifan.com/summary_bluetooth_specification_download/ [背景] 之前就已经整理和转帖了 ...
- 【转】void及void指针的深刻解析
void的含义 void即“无类型” ,void*则为“无类型指针”,可以指向任何数据类型,所以又叫做“通用指针”. void指针使用规范 ①void指针可以只想任意类型的数据,亦即可用任意数据类型的 ...
- 边框回归(Bounding Box Regression)详解
原文地址:http://blog.csdn.net/zijin0802034/article/details/77685438 Bounding-Box regression 最近一直看检测有关的Pa ...
- linux windows 传输文件
其中两种方式,当然,只是我自己试验的两个,其实还有别的方法,但是我也懒得实践了. 1 pscp c:\abc.sql root@192.168.1.1:/home/person/hww 2 Lrz ...
- 目标检测--SSD: Single Shot MultiBox Detector(2015)
SSD: Single Shot MultiBox Detector 作者: Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, ...
- spark简单总结—短小精悍
Spark是基于内存计算的大数据并行计算框架.因为其基于内存计算,较Hadoop中MapReduce计算框架具有更高的实时性,同时保证了高效容错性和可伸缩性.从2009年诞生于AMPLab到现在已经成 ...