“玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力(暴力)
来源:互联网 发布:手机流量软件 编辑:程序博客网 时间:2024/05/17 19:57
1143 - 计算几何你瞎暴力
Time Limit:5s Memory Limit:256MByte
Submissions:1615Solved:306
DESCRIPTION
今天HH考完了期末考试,他在教学楼里闲逛,他看着教学楼里一间间的教室,于是开始思考:
如果从一个坐标为 (x1,y1,z1)的教室走到(x2,y2,z2)的距离为|x1−x2|+|y1−y2|+|z1−z2|
那么有多少对教室之间的距离是不超过R的呢?
INPUT
第一行是一个整数T(1≤T≤10), 表示有T组数据接下来是T组数据,对于每组数据:第一行是两个整数n,q(1≤n≤5×104,1≤q≤103), 表示有n间教室,q次询问.接下来是n行, 每行3个整数xi,yi,zi(0≤xi,yi,zi≤10),表示这间教室的坐标.最后是q行,每行一个整数R(0≤R≤109),意思见描述.
OUTPUT
对于每个询问R输出一行一个整数,表示有多少对教室满足题目所述的距离关系.
SAMPLE INPUT
13 30 0 01 1 11 1 1123
SAMPLE OUTPUT
113
HINT
对于样例,1号教室和2号教室之间的距离为3, 1号和3号之间的距离为3, 2号和3号之间的距离为0
n*n肯定要超时,分析下数据,发现坐标很小,可以直接通过计算每个点坐标个数,暴力枚举组合数
相同的时候考虑错公式了,应该是X*(X-1),写成了x-1
#include<string.h>#include<math.h>#include<stdio.h>#include<algorithm>#include<iostream>#include<queue>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int N=5005;typedef long long ll;struct node{ ll x,y,z;}e[N];ll Map[105][105][105];ll dis[35];ll ans[35];ll Distance(node a,node b){ return abs(a.x-b.x)+abs(a.y-b.y)+abs(a.z-b.z);}int main(){ ll t; scanf("%lld",&t); while(t--) { ll n,m,cnt=0,x,y,z,tt,sum=0; scanf("%lld%lld",&n,&m); mem(Map,0); mem(dis,0); mem(ans,0); for(ll i=1; i<=n; i++) { scanf("%lld%lld%lld",&x,&y,&z); if(!Map[x][y][z]) e[cnt].x=x,e[cnt].y=y,e[cnt++].z=z,Map[x][y][z]++; else Map[x][y][z]++; } for(ll i=0; i<cnt; i++) { for(ll j=i; j<cnt; j++) { if(i!=j) { ll temp=Distance(e[i],e[j]); ll tx=Map[e[i].x][e[i].y][e[i].z]; ll ty=Map[e[j].x][e[j].y][e[j].z]; dis[temp]+=tx*ty; } else { if(Map[e[i].x][e[i].y][e[i].z]) { dis[0]+=Map[e[i].x][e[i].y][e[i].z]*(Map[e[i].x][e[i].y][e[i].z]-1)/2; } } } } for(ll i=0; i<=30; i++) { sum+=dis[i]; ans[i]=sum; } for(ll i=1; i<=m; i++) { scanf("%lld",&tt); if(tt>30) printf("%lld\n",ans[30]); else printf("%lld\n",ans[tt]); } }}
阅读全文
0 0
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力(暴力)
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力(计算几何)
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力
- 玲珑oj1143 计算几何你瞎暴力
- 玲珑学院 1143 计算几何你瞎暴力【计算几何】【技巧暴力】
- “玲珑杯”ACM比赛 Round #18 A(穷举)
- “玲珑杯”ACM比赛 Round #18 A -- 图论你先敲完模板(DP+思路)
- A 计算几何你瞎暴力
- “玲珑杯”ACM比赛 Round #15 A
- “玲珑杯”ACM比赛 Round #18
- “玲珑杯”ACM比赛 Round #18
- “玲珑杯”ACM比赛 Round #18 C(dp)
- “玲珑杯”ACM比赛 Round #4 A -- chess play
- “玲珑杯”ACM比赛 Round #10-A-Black and White
- 玲珑杯”ACM比赛 Round #19 A simple math problem
- “玲珑杯”ACM比赛 Round #18 B -- 数论你还会快速幂【规律】
- 面向对象5---多态
- ccf门禁系统201412-1
- G
- 7嵌入图片
- 关于SSM框架体会和小结
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力(暴力)
- 半杯水
- 欢迎使用CSDN-markdown编辑器
- 简单的“三子棋”
- 8绝对路径和相对路径
- Eclipse/STS 系列配置
- jQuery——开发插件
- mysql存储过程语法及实例
- java 基础