题意

给定n颗炸弹,每颗炸弹有一个左边x,y以及一个爆炸时间,一个炸弹爆炸会牵引不超过k距离的其它炸弹爆炸(如下图k=2时),每秒可以点燃一个炸弹,问最少多少秒所有炸弹爆炸。

题解

假如没有牵连爆炸这个限制,这道题就变成一个简单的贪心问题,排序每次选择爆炸时间最长的一个点燃,当时间已经比下一个时间长时就是答案,那么有了牵连爆炸的限制后该怎么做呢?其实我们可以把会一起爆炸的炸弹看成一个炸弹,也就可以用并查集来维护,然后它们爆炸的时间就是集合中爆炸时间最短的那个。再之后就变成那个简单的贪心问题了。

#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define fr first
#define sc second
#define ll long long
const long long inf = 1e18;
long long n, d, nn, a[200069], dsu[200069], ex[200069];
pair<pair<long long, long long>, long long> as[200069];//存储每颗雷的信息
long long fd(long long x)//并查集
{if (dsu[x] != x){dsu[x] = fd(dsu[x]);}return dsu[x];
}
int main()
{long long t, rr, i, ii, l, y, x, p, z;scanf("%lld", &t);//组数for (rr = 0; rr < t; rr++){scanf("%lld%lld", &n, &d);//n颗雷 半径为d的地雷会爆炸for (i = 1; i <= n; i++){scanf("%lld%lld%lld", &x, &y, &a[i]);//a存储下班为i的爆炸时间为ias[i] = { {x,y},i };//雷的信息,y,x,第i颗雷dsu[i] = i;//并查集初始化}for (ii = 0; ii < 2; ii++)//两次,一次跑x一次跑y{sort(as + 1, as + n + 1);//根据第一坐标优先其次第二坐标优先在者编号优先从小到大排序for (i = 1; i <= n; i++){y = as[i].fr.fr;//x/yx = as[i].fr.sc;//y/xp = as[i].sc;//当前 编号if (i > 1 && y == as[i - 1].fr.fr && x - as[i - 1].fr.sc <= d)//一个坐标相同,另外一个坐标相差为d就为一个集合的雷{l = as[i - 1].sc;a[fd(p)] = min(a[fd(p)], a[fd(l)]);//爆炸时间为较小的那个dsu[fd(l)] = fd(p);//合并成一个集合p}}for (i = 1; i <= n; i++)//交换x,y坐标再跑一次{swap(as[i].fr.fr, as[i].fr.sc);}}//接下来的问题就变成了有nn个爆炸时间不同的雷,每秒可以点爆一个,最快几秒可以点爆完成,贪心的去做,每次都点爆离当前时间最小的一颗雷即可nn = 0;for (i = 1; i <= n; i++){if (fd(i) == i){nn++;ex[nn] = a[i];}}sort(ex + 1, ex + nn + 1, greater<long long>());ex[nn + 1] = -inf;for (i = 1; i <= nn; i++){if (ex[i + 1] <= i - 1)break;}printf("%lld\n", i-1);}
}

Unusual Minesweeper相关推荐

  1. Codeforces Round #762 (Div. 3)

    E. MEX and Increments F. Let's Play the Hat? G. Unusual Minesweeper H. Permutation and Queries  用个优先 ...

  2. python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...

    Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...

  3. python3扫雷代码_GitHub - pantaduce/minesweeper: Python代码编写的扫雷游戏

    Minesweeper(扫雷) 这是一个由Python编写的扫雷游戏,基于tkinter/Tkinter开发,支持python2和python3. 功能 概述 基本功能:左键扫雷,右键标记 记录游戏步 ...

  4. java版扫雷下载_Java 实现扫雷游戏(MineSweeper)

    package com.kerence.mine.data_structure; /** * 雷块类的属性和操作 * * @download:http://www.codefans.net * @au ...

  5. 图像识别工程师 VS The application has requested the Runtime to terminate it in an unusual way.

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 The application has requ ...

  6. This application has requested the Runtime to terminate it in an unusual way. Please contact the app

    在做机器学习实战第九章的实验,使用Tkinter和matplotlib绘制回归树和模型树时,代码没有问题但是抛出了如下错误 ValueError: Masked arrays must be 1-D ...

  7. UVA10189 Minesweeper【Ad Hoc】

    Have you ever played Minesweeper? It's a cute little game which comes within a certain Operating Sys ...

  8. codeforces 900D. Unusual Sequences(莫比乌斯反演)

    900D. Unusual Sequences(莫比乌斯反演) 题目链接:传送门 题意: 给出 xxx 和 yyy ,求序列形如 a1,a2..ana_1,a_2..a_na1​,a2​..an​ 满 ...

  9. Unusual Competitions

    Unusual Competitions A bracketed sequence is called correct (regular) if by inserting "+" ...

最新文章

  1. 深度解析 H.265 视频解决方案
  2. html如何提交保存,html表单提交保存
  3. linux 自学系列:wc命令
  4. __user_initial_stackheap 库函数翻译(转)
  5. 在Linux系统下, 可以用一个命令很容易批量删除.svn的文件夹
  6. cocos2dx迷你地图
  7. 复杂的c语言,C语言:复杂数据类型
  8. python内置类型和类_python – 内置类型和用户定义之间的不一致
  9. chrome全屏隐藏状态栏_PS技巧丨18个让你相见恨晚的PS隐藏技巧!
  10. ASP.NET 数据访问类
  11. 向日葵Gantt支持的XML 数据结构
  12. 牛腩新闻发布系统错误总结
  13. 1000套精选微信小程序源码
  14. bgfx入门练习2——找出DX,OpenGL驱动切换实现原理
  15. 版主评选资料 - dongshan8
  16. OpenGL学习笔记--配置VS环境
  17. Android Tel 拨打电话及来电流程分析
  18. 制作openstack离线 yum 源
  19. 安卓手机通过termux免root安装kali
  20. 计算机组成原理与体系结构 - 6分

热门文章

  1. 网络ioctl实践1:获取网卡的MAC和IP
  2. 使用函数求e的近似值 C语言 PTA
  3. 脑电病理波资料统计-----异常脑波的分类诱发实验
  4. android 展示虚拟键盘,在android TabLayout中显示虚拟键盘
  5. Clipper转换器使用示例
  6. 2022年我自己的主导价值观
  7. 屏幕适配Autoresizing / Autolayout / Mansory / 自定义Frame实现
  8. 研读Joint Multi-modal Aspect-Sentiment Analysis with Auxiliary Cross-modal
  9. 在wsl的图形化界面中无法启动没有管理权限的“synaptic软件包管理器”
  10. Memcached和Redis数据缓存系统