uva 11524 Values whose Sum is 0
来源:互联网 发布:知客是什么意思 编辑:程序博客网 时间:2024/06/12 20:52
题目大意:给定四个各包含n个数字的集合,现在问从各个集合中选择一个数,问a + b + c + d = 0 的排列有多少,条件是 (a, b, c ,d )属于 AxBxCxD。
解题:个人觉得此题应该是一个暴力题,就是先计算出a+b ,然后遍历c+d,接下来就是查找一下 a+b = -c-d,有多少种了而已。
我们这里使用hash技术来查询。注:使用STL中map一不小心就、、。。。。。。。TLE。
//// main.cpp// uva 1152 - 4 Values whose Sum is 0//// Created by XD on 15/8/12.// Copyright (c) 2015年 XD. All rights reserved.//#include <iostream>#include <string>#include <queue>#include <stack>#include <stdio.h>#include <stdlib.h>#include <math.h>#include<vector>#include <string.h>#include <string>#include <algorithm>#include <set>#include <map>#include <cstdio>#define ll long longusing namespace std ;int A[4010] ;int B[4010] ;int C[4010] ;int D[4010] ;ll ans ;int n ;struct node{ int key ; ;int num ; node() ;};node::node(){ num=0 ;}int key[16000010] ;int num[16000010] ;const int hashsize = 1000003 ;int head[hashsize] ;int tnext[160000010] ;void init(){ memset(head, 0, sizeof(head)) ; memset(tnext, 0, sizeof(int) * (n * n ) + 5) ;// memset(num, 0, sizeof(n * n )) ;}int HASH(int s){ return abs(s) % hashsize ;}void insert_into_table(int pos){ int h = HASH(key[pos]) ; int u = head[h] ; while (u != 0 ) { if (key[u] == key[pos]) { num[u]++ ; return ; } u = tnext[u] ; } tnext[pos] = head[h] ; head[h] = pos ; num[pos]= 1;}int findNumFromTable(int k){ int u ; int h = HASH(k) ; u = head[h] ; while (u != 0 ) { if (key[u] == k) { return num[u]; } u = tnext[u] ; } return 0 ;}int main(int argc, const char * argv[]) { int casenum ; scanf("%d",&casenum) ; int flag = 0 ; while (casenum--) { if (flag==1) { printf("\n") ; } flag = 1 ; scanf("%d" ,&n) ; for (int i = 0; i<n; i++) { scanf("%d%d%d%d" , &A[i] ,&B[i],&C[i],&D[i]) ; } init() ; int t = 1 ; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { key[t] = A[i] + B[j] ; insert_into_table(t) ; t++ ; } } ans = 0 ; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int k = C[i] + D[j] ; ans += findNumFromTable(-k) ; } } printf("%lld\n" ,ans) ; } return 0;}
0 0
- uva 11524 Values whose Sum is 0
- UVA 11524 Values whose Sum is 0
- 4 Values whose Sum is 0 UVA
- 4 Values whose Sum is 0 UVA
- 4 Values whose Sum is 0 UVA
- uva 1152-4 Values whose Sum is 0
- UVA - 1152 4 Values whose Sum is 0 二分法
- UVa 1152 4Values whose Sum is 0
- UVa 1152 4 Values whose Sum is 0
- UVA 1152 4 Values whose Sum is 0 (hash)
- Uva - 1152 - 4 Values whose Sum is 0
- UVA 1152 4 Values whose Sum is 0
- UVA 1152 4 Values whose Sum is 0
- UVA - 1152 4 Values whose Sum is 0
- uva 1152 ——4 Values whose Sum is 0
- UVa OJ 1152 - 4 Values whose Sum is 0
- uva 1152 - 4 Values whose Sum is 0
- UVA 1152 4 Values whose Sum is 0
- EmguCV+Kinect2.0获取BodyIndex图
- 解决php支付宝接口支付时会跳到一个确定按钮页
- Android滑动页面导航效果: PagerSlidingTabStrip
- ZOJ 1610 Count the Colors 线段树/暴力模拟
- ubuntu系统 ln 命令使用说明,创建链接
- uva 11524 Values whose Sum is 0
- 并查集 杭电1232畅通工程
- 剑指offer面试题java版系列 题1 Singleton模式
- BAPC2014 K&&HUNNU11591:Key to Knowledge(中途相遇法)
- mysql中使用case when 做where条件筛选表记录
- Java集合类: Set、List、Map、Queue使用场景梳理
- Oil Deposits(dfs深搜)
- ZOJ 2526 FatMouse and JavaBean II 单源最短路 dijkstra
- 实现OPENCV之findcontours函数(一)