UVA 1152 4 Values whose Sum is 0
来源:互联网 发布:淘宝关键词重复 编辑:程序博客网 时间:2024/06/07 05:28
题意:给出4堆数 每堆n个数 每堆取一个数 求4个数总和为0 的方案数
把前两堆合到一起 后两堆合到一起 然后二分找 这样复杂度为n²log(n²)
是有可能T的 用map就很可能T 用数组或vec先存再排序 (而且不要把相同的数合到一起) 再二分搜索一下可以水过
也可以手写一个哈希 这样就是n² 可以稳过
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cctype>#include<cmath>#include<vector>#include<queue>#include<map>#include<hash_map>#include<algorithm>#include<set>#define scnaf scanf#define cahr char#define bug puts("bugbugbug");using namespace std;typedef long long ll;const int mod=1000000007;const int maxn=4005;const int inf=1e9;int a[maxn],b[maxn],c[maxn],d[maxn];int ab[maxn*maxn];int main(){ int T_T; scanf("%d",&T_T); while(T_T--) { 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++) ab[i*n+j]=a[i]+b[j]; sort(ab,ab+n*n); int ans=0; for(int i=0;i<n;i++) for(int j=0;j<n;j++){ int v=-c[i]-d[j]; int it=lower_bound(ab,ab+n*n,v)-ab; while(it<n*n&&ab[it]==v) { ans++;it++; } } printf("%d\n",ans); if(T_T)puts(""); } return 0;}
0 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
- UVA 1152 4 Values whose Sum is 0 (二分)
- 1152 - 4 Values whose Sum is 0
- 计算圆点坐标
- 设计模式的定义
- zigbee学习之OLED
- HTML5 canvas画图
- linux之Makefile(下)
- UVA 1152 4 Values whose Sum is 0
- 关于ActionBar
- 边缘检测之Canny算子
- java笔记--Java内存模型与线程
- Eclipse 中的多线程编译——如何成倍提升Gcc编译器的编译速度
- zigbee学习之DHT11
- Java泛型Type
- Trie树和其它数据结构的比较
- IOS开发——多线程