uva 1152 4 Values whose Sum is 0 map会超时
来源:互联网 发布:淘宝网真丝围巾 编辑:程序博客网 时间:2024/06/06 20:33
用容器可能会超时,需要手写
解法:
容器1={a+b|a属于A,b属于B}
容器2={c+d|c属于C,d属于D}
遍历容器1的元素x,查找容器2中是否存在-x。
时间复杂度根据不同的写法会有略微不同。
如果时间复杂度记为O(n^2*log(n)),n的大小为4000,题目限时9000MS,可以过,但不能用STL。
/**========================================== * This is a solution for ACM/ICPC problem * * @source:uva 1152 * @type: * @author: wust_ysk * @blog: http://blog.csdn.net/yskyskyer123 * @email: 2530094312@qq.com *===========================================*/#define REP(i,n) for(int i=0 ;i<(n) ;i++)#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>using namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int maxn=4000 ;int A[maxn+4],B[maxn+4];int C[maxn+4],D[maxn+4];int n,cnt;const int MOD=1000000;struct Node{ Node* nex; int data; int num; Node(){} Node(Node *nex,int data,int num):nex(nex),data(data),num(num){}};struct SE{ Node* key[MOD]; void clear() { REP(i,MOD) { key[i]=NULL; } } void insert(int x) { Node* t; int k=(x%MOD+MOD)%MOD; Node* p=key[k]; if(p==NULL) { key[k]=new Node( t=NULL,x,1 ); return; } while(p->data!=x&&p->nex) { p=p->nex; } if(p->data!=x) p->nex=new Node(t=NULL,x,1 ); else p->num++; } int count(int x) { int k=(x%MOD+MOD)%MOD; Node *p=key[k]; while(p&&p->data!=x) { p=p->nex; } if(p==NULL) return 0; return p->num; }}se1,se2;void cal(int k){ Node* p=se1.key[k]; while(p) { int x=p->data; cnt+=p->num*se2.count(-x); p=p->nex; }}int main(){ int T,kase=0;scanf("%d",&T); while(T--) { if(kase++) putchar('\n'); scanf("%d",&n); REP(i,n) { scanf("%d%d%d%d",&A[i],&B[i],&C[i],&D[i]); } se1.clear(); se2.clear(); REP(i,n) { REP(j,n) { se1.insert(A[i]+B[j]); se2.insert(C[i]+D[j]); } } cnt=0; for(int i=0;i<MOD;i++) { cal(i); } printf("%d\n",cnt); } return 0;}/*221 1 1 12 2 2 2*/
0 0
- uva 1152 4 Values whose Sum is 0 map会超时
- 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
- UVA 1152 4 Values whose Sum is 0 (二分)
- 记一次mapreduce程序错误调试
- 【关于tftp】 imx283 与Linux主机 在tftp命令格式的不同
- Android中自定义RatingBar
- 组原(2)
- java中接口实现的大概标准格式
- uva 1152 4 Values whose Sum is 0 map会超时
- 在spring 中如何注入map,set,list,property等参数
- Eclipse上安装svn插件及解决Fail to load JavaHL Library的错误
- 设计模式之六大原则
- java 基本语法(一)
- Android TextView加中划线,下划线
- iOS面试总结
- spring 整合jackson
- ThreadLocal 的简单应用