题目链接:1346: DARK SOULS

并查集系列:WUSTOJ 1319: 球(Java)并查集

Description

CQ最近在玩一款游戏:DARK SOULS,这是一款以高难度闻名的硬派动作游戏,而CQ就在这虐与被虐的反复循环中获得了极大的快感(咦我好像泄露了什么……)。

CQ自诩核心玩家,但是他又是个很懒的人。作为一款小怪都可以一套秒人的游戏,DARK SOULS采取的是即时存储制,一不小心挂了就要从复活点重新跑尸,不仅麻烦还要倍加小心(打死的小怪都复活了……一旦跑尸路上被杀还会发生很丧心病狂的事情……),因此CQ决定采用S/L大法,每隔一段时间退出游戏备份存档。

现在问题来了!我们将CQ当前正探索的区域理想化为N*N的正方形网格(坐标从1到N),区域中有若干群小怪,CQ每刷完K群小怪或者探索完该区域就会退出游戏备份存档。那么怎么才算一群小怪呢?CQ对一群小怪的定义是:若两只小怪的水平距离和垂直距离均小于等于D,那么这两个小怪就属于同一群。(唔,心情好的时候会刷完整个区域也说不定),则属于同一群小怪。在上述条件下,CQ想知道探索完给定区域究竟需要备份多少次存档。

前面已经说了CQ是个很懒的人,他懒得算每次他探索一个区域需要备份多少次存档,于是这任务就交给你咯……

Input

输入第一行是整数T,代表接下来有T组数据。

每组数据第一行是三个整数N(1 <= N < =100),K(1 <= K <= 20),D(0 <= D <= 10),S(1 <= S <= N * N),分别代表区域边长,每次刷怪群数,给定距离,小怪数目。

接下来S行数据每行有两个整数X(1 <= X <= N),Y(1 <= Y <= N),代表每只小怪的坐标。

Output

输出CQ总共备份了多少次。

Sample Input

2
5 2 1 6
1 1
2 2
2 5
3 4
4 1
4 3
5 2 1 6
1 1
5 5
2 2
4 4
5 1
3 3

Sample Output

2
1

分析

WUSTOJ 1346: DARK SOULS(Java)并查集的更多相关文章

  1. java 并查集

    并查集代码 并查集优化⼀ 并查集优化⼆ 实战题⽬目1. https://leetcode.com/problems/number-of-islands/2. https://leetcode.com/ ...

  2. Java 并查集Union Find

    对于一组数据,主要支持两种动作: union isConnected public interface UF { int getSize(); boolean isConnected(int p,in ...

  3. java——并查集 UnionFind

    时间复杂度: O(log*n),近乎是O(1)级别的 UnionFind 接口: public interface UF { int getSize(); boolean isConnected(in ...

  4. WUSTOJ 1319: 球(Java)并查集

    题目链接:1319: 球 参考:wustoj 1319 球-wust_tanyao,并查集 并查集系列:WUSTOJ 1346: DARK SOULS(Java)并查集 Description Icy ...

  5. 并查集(Java实现)

    (最好在电脑下浏览本篇博客...手机上看代码不方便) 当时学的时候看的一本印度的数据结构书(好像是..有点忘了..反正跟同学们看的都不一样...)...里面把本文提到的所有情况都提到了,我这里只是重复 ...

  6. 并查集的Java实现

    Java实现并查集,合并时采用路径压缩算法. 如果合并时使用循环修改的方法,一次合并的时间复杂度就为N,无法接受 public class Union { public int[] id;//对应索引 ...

  7. 并查集---java模板

    并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中.这一类问题近几年来反复出 ...

  8. HYSBZ - 1050(旅行comf 并查集Java实现)

    HYSBZ - 1050(旅行comf Java实现) 原题地址 解法:枚举每一条边,对于这条边,我们需要找到集合中和其值相差最小的最大边,这个集合是指与包括i边在内的ST联通集.对于这一要求,我们只 ...

  9. 并查集(不相交集合)详解与java实现

    目录 认识并查集 并查集解析 基本思想 如何查看a,b是否在一个集合? a,b合并,究竟是a的祖先合并在b的祖先上,还是b的祖先合并在a上? 其他路径压缩? 代码实现 结语 @(文章目录) 认识并查集 ...

随机推荐

  1. SQL学习笔记(二)

    连接查询 数据准备 例1:查询学生信息及学生的成绩 等值连接 此方法会产生笛卡尔积,生成的记录总数=表1的总数*表2的总数,会产生临时表 内连接 select * from 表1 inner join ...

  2. 【转】Python编程: 多个PDF文件合并以及网页上自动下载PDF文件

    1. 多个PDF文件合并1.1 需求描述有时候,我们下载了多个PDF文件, 但希望能把它们合并成一个PDF文件.例如:你下载的数个PDF文件资料或者电子发票,你可以使用python程序合并成一个PDF ...

  3. mysql 数据库通过拷贝文件恢复方法

    MyIASM可以直接拷贝过去,就可以完成备份的还原 搭建与原数据库相同的的数据库环境(mysql版本一致) 将data文件夹下的文件复制到搭建的新数据库data文件夹下 删除数据库下的.ibd(数据文 ...

  4. Unity3d 错误提示 GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced

    程序出現這個問題的話,程序編譯時正確,運行時報錯,而且沒有報出是哪個代碼文件出處. 這個問題一般首先去檢查Level內有用到OnGUI,Debug結果發現某代碼文件在調試代碼時複製多了一行GUILay ...

  5. phpstorm 断点调试总是从index.php的第一行开始

    去掉勾选,重开phpstorm

  6. Xamarin图表开发基础教程(1)

    Xamarin图表开发基础教程(1) 在Xamarin图表开发中,最常用的框架是OxyPlot和Microcharts.其中,OxyOPlot提供多种多样的图表类型和丰富的图表功能,可以实现各种复杂的 ...

  7. flutter 右滑返回上一页

    import 'package:flutter/material.dart'; import 'package:flutter_app/pages/SplashScreen.dart'; import ...

  8. Dart静态方法、对象操作符和类的继承

    /* Dart中的静态成员: 1.使用static 关键字来实现类级别的变量和函数 2.静态方法不能访问非静态成员,非静态方法可以访问静态成员 */ // class Person { // stat ...

  9. C++11智能指针之std::unique_ptr

    C++11智能指针之std::unique_ptr   uniqut_ptr是一种对资源具有排他性拥有权的智能指针,即一个对象资源只能同时被一个unique_ptr指向. 一.初始化方式 通过new云 ...

  10. 构造方法(和python初始化变量类似)

    public class Demo1 { int  name2=1; public Demo1(int name) { name=name2; } public Demo1() { } public ...