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

对于每个询问输出一行一个整数,表示有多少对教室满足题目所述的距离关系.

Sample Input

1
3 3
0 0 0
1 1 1
1 1 1
1
2
3

Sample Output

1
1
3

Hint

对于样例,1号教室和2号教室之间的距离为3, 1号和3号之间的距离为3, 2号和3号之间的距离为0

题意

题解:

由于n的范围 所以n^2暴力是不行的 但是坐标只有0到10 可以从这里下手
直接暴力预处理0-30所有可能的距离的种类数
对于相同的坐标点 他们之间的距离是0 所以一定要算上 对于不同的点 种类数为点1*点2 然后除以2 因为会重复计算
最后注意种类数会超int

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll vis[15][15][15];
ll ans[33];
int main(){int t;scanf("%d",&t);while (t--){memset(vis,0,sizeof(vis));memset(ans,0,sizeof(ans));int n,q;int x,y,z;scanf("%d%d",&n,&q);for (int i = 0; i < n; ++i){scanf("%d%d%d",&x,&y,&z);vis[x][y][z]++;}/*直接预处理距离的种数*/for (int a = 0; a <= 10; ++a){for (int b = 0; b <= 10; ++b){for (int c = 0; c <= 10; ++c){for (int i = 0; i <= 10; ++i){for (int j = 0; j <= 10; ++j){for (int k = 0; k <= 10; ++k){int d = abs(a-i)+abs(b-j)+abs(c-k);if (d==0&&vis[i][j][k]){ans[d] += (vis[i][j][k])*(vis[i][j][k]-1)/2;}else if (vis[i][j][k]*vis[a][b][c]>0){ans[d] += vis[i][j][k]*vis[a][b][c];}}}}}}}for (int i = 1; i <= 30; ++i) ans[i] =ans[i-1]+ans[i]/2;int r;while (q--){scanf("%d",&r);if(r>30)r=30;printf("%lld\n",ans[r]);}}return 0;
}

玲珑oj 1143 - 计算几何你瞎暴力 思维相关推荐

  1. 玲珑oj 1032A-B(组合数学)

    1032 - A-B Time Limit:1s Memory Limit:128MByte Submissions:528Solved:105 DESCRIPTION 你有n个球,需要把他们放到m个 ...

  2. 「LibreOJ β Round #2」计算几何瞎暴力

    https://loj.ac/problem/517 题解 首先我们如果没有排序这个骚操作的话,可以直接记一下各个数位的前缀和,然后异或标记给全局打,查询的时候先把区间信息提取出来然后整体异或就好了. ...

  3. Wannafly挑战赛20 A 染色(暴力/思维)

    链接:https://www.nowcoder.com/acm/contest/133/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  4. 枚举 ---- Codeforces Round #711 (Div. 2) D. Bananas in a Microwave[枚举暴力+思维优化]

    题目链接 题目大意: 就是你有n次操作,每次操作给你三个参数:ti,xi,yit_i,x_i,y_iti​,xi​,yi​. 如果ti==1t_i == 1ti​==1你可以进行k=k+xik=k+x ...

  5. ZOJ 2849【瞎暴力的搜索】

    思路: 靠评测机抖一抖的思路: 拿个队列维护一下符合类型的可以搜索(指四周还存在可以遍历的点)的点.然后暴力搜索,所以问题来了,这个暴力搜索会大大地重复遍历次数. DFS遍历图以前一直忽略重复,以为搜 ...

  6. codeforces 465 C. No to Palindromes!(暴力+思维)

    题目链接:http://codeforces.com/contest/465/problem/C 题意:给出一个不存在2个或以上回文子串的字符串,全是由小写字母组成而且字母下表小于p,问刚好比这个字符 ...

  7. CodeForces - 1215C Swap Letters(暴力+思维+模拟)

    题目链接:点击查看 题目大意:给出两个只由字母a和字母b所组成的字符串,我们记为s和t,现在我们可以交换两个字符串任意位置的字母(只能在两个串之间交换,不能在自己串中交换),现在问能否通过一定次数的交 ...

  8. Moving stones(暴力+思维)

    链接:https://ac.nowcoder.com/acm/contest/5891/D 来源:牛客网 题目描述 One day, GK was getting very bored with pa ...

  9. 牛客网 第十七届中国计量大学程序设计竞赛(同步赛)(重现赛)B题 Broken Pad 暴力+思维

    题意: 给你两个01串,经过两种操作,1.直接让第一串经过操作变成目标串:2.可以点击空白处,即0的地方,使得操作串全部清空为0串,再变为目标串:最终比较两种方式,哪种需更少步骤,输出每步点击的位置. ...

最新文章

  1. lvs调整hash表大小
  2. 单链表的增删查改等基本操作C++实现
  3. 你以后会不会有小三?
  4. java开源图像处理ku_83 项开源视觉 SLAM 方案够你用了吗?
  5. FinNexus宣布已售出1000万枚FNX给相关投资者
  6. python中 urllib, urllib2, httplib, httplib2 几个库的区别
  7. GameObject.Find() 和 Transform.Find()的区别
  8. git 小乌龟 配置_Git-TortoiseGit完整配置流程
  9. 基于Android Studio的游戏开发-横版格斗.part
  10. php 上传微信媒体,关于微信公众号API多媒体上传
  11. Apple Pay编程指南(5) - 处理付款结果
  12. SEO优化应该照用户的需求去做
  13. matlab中unifrnd函数用法,概率和统计的MATLAB指令
  14. 国外服务器和国内服务器 不同时区的问题
  15. python对市场营销-python数据分析:商品数据化运营(上)——知识点
  16. nr技术之---MIMO
  17. 周志华教授《机器学习》中PCA求解错了?
  18. 985高校大数据专业教学究竟怎么样?在校生有话说
  19. 从EJB3中访问资源的5种方式
  20. “收割”小镇青年,幸福西饼的背水一战

热门文章

  1. LeetCode 03: T58. 最后一个单词的长度(简单); 剑指 Offer 05. 替换空格(简单); 剑指 Offer 58 - II. 左旋转字符串(简单)
  2. Shell脚本学习之二:变量与运算符
  3. 关于超声和光声中的延迟求和算法的详细说明 Detail description of DAS algorithm
  4. unique(C++)函数
  5. 常用的优化理论类型介绍
  6. HC110110036 SR基本原理
  7. 全国职业院校技能大赛信息安全管理与评估赛题一
  8. 抢课php,大一新生抢不到选修课怎么办 大学抢课技巧
  9. 从 PHP、Promise、Android 和 iOS 代码看如何链式编程
  10. 1-第一个halcon程序