UVA1152_4 Values whose Sum is 0
中途相遇法,这题目总结后我感觉和第一篇博客很像,他们都取了中间,也许这就是二分的魅力吧
这题题意就是从ABCD四个集合中选四个元素使他们的和为0
题意很简单,但是实现起来很容易超时,不能一个一个枚举
然后就想到了枚举两个,那么新生成EF两个集合大小为n方,然后如何查找?
最容易想到的就是用map标记,但汝佳说了这会超时,我不信,试了一发,超时了!!!
除了用map还能用什么呢,联想到之前那个UVA对称的题目,我们可以sort一下,然后查找e的相反数时候,二分查找-e,记住,找到还不行,有可能存在多个-e.所以upper_bound-lower_bound 就可以了,然后就这样过了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<map>
#include<queue>
#include<vector>
using namespace std;
int t,n,a,b,c,d,kase,cnt;
int num[4][4040],sum1[16000040],sum2[16000040];
map<int,int> list;
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
kase=0;
cin>>t;
while(t--){
memset(num,0,sizeof num);
memset(sum1,0,sizeof sum1);
memset(sum2,0,sizeof sum2);
cnt=0;
if(kase++) cout<<"\n";
cin>>n;
for(int i=0;i<n;i++)
scanf("%d%d%d%d",&num[0][i],&num[1][i],&num[2][i],&num[3][i]);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum1[i*n+j]=num[0][i]+num[1][j];
sum1[i*n+j]=-sum1[i*n+j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum2[i*n+j]=num[2][i]+num[3][j]; }
}
sort(sum1,sum1+n*n);
sort(sum2,sum2+n*n);
int end=n*n,pos1=0,pos2=0;
for(int i=0;i<end;i++){
pos1 = lower_bound(sum2+pos1,sum2+end,sum1[i]) -sum2;
pos2 = upper_bound(sum2+pos1,sum2+end,sum1[i]) -sum2;
if(pos1==end) break;
cnt+=pos2-pos1;
pos1=max(pos1-1,0);
}
cout<<cnt<<endl;
}
return 0;
}
UVA1152_4 Values whose Sum is 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< ...
- UVA1152-4 Values whose Sum is 0(分块)
Problem UVA1152-4 Values whose Sum is 0 Accept: 794 Submit: 10087Time Limit: 9000 mSec Problem Desc ...
- POJ - 2785 4 Values whose Sum is 0 二分
4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 25615 Accep ...
- POJ 2785 4 Values whose Sum is 0(折半枚举+二分)
4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 25675 Accep ...
随机推荐
- python3项目打包成exe可执行程序
使用pyinstaller将python文件打包成exe程序,打包步骤如下: 一.安装pyinstaller (1)win+R输入cmd,打开命令窗口 (2)安装pyinstaller,安装指令:pi ...
- Python笔记(三)_字典与集合
字典dict 映射类型,以键-值的方式存储,通过键来取相应的值 member={'one':1,'two':2,'three':3} 创建字典member=dict('苹果'='apple','桔子' ...
- day 84 Xadmin组件之构建表单数据
一 .先设置一些相关配置 1. 创建数据库模型. 在app01 下创建 from django.db import models # Create your models here. class Au ...
- linux下部署springboot vue项目
使用的工具是 XFTP5 XSHELL5 docker pull gmaslowski/jdk 拉取jdk docker images 查询下载的镜像ID (如:390b58b1be42) docke ...
- 注册服务到服务中心(Consul)
注册服务到服务中心(Consul) 添加POM文件中的依赖 在POM文件添加如下依赖: <dependency> <groupId>org.springframework.bo ...
- Python - zipfile 乱码问题解决
最近使用zipfile进行解包过程中遇到了很不舒服的问题,解包之后文件名是乱码的.下面进行简单总结: 首先,乱码肯定是因为解码方式不一样了,zipfile使用的是utf-8和cp437这两种编码方式, ...
- Java中synchronized 修饰在static方法和非static方法的区别
[问题描述]关于Java中synchronized 用在实例方法和对象方法上面的区别 [问题分析]大家都知道,在Java中,synchronized 是用来表示同步的,我们可以synchronized ...
- 十、hibernate的延迟加载和抓取策略
延迟加载:控制sql语句发送时机 抓取策略:控制sql语句格式,子查询.连接查询.普通sql 延迟加载 延迟加载(lazy),也叫做懒加载:执行到该行代码时,不发送sql进行查询,只有在真正使用到这个 ...
- systemctl 相关命令
systemctl 相关命令:service,chkconfig systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV 和 LSB 的启动脚本.systemd 的特性有:支持并行化 ...
- rsync nfs 实时同步,结合实战
目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五 ...