[第18届 科大讯飞杯 J] 能到达吗
能到达吗
题目链接:牛客5278 J 能到达吗
Description
给定一个 \(n\times m\) 的地图,地图的左上角为 \((1, 1)\) ,右下角为 \((n,m)\)。
地图上有 \(k\) 个障碍物,你可以上下左右走地图,但是不能走出地图或走到障碍物上。
计算无序对 \(\{ (x_i,y_i), (x_j,y_j) \}\) 满足两点相互可达的对数。
答案对 \(10^9 + 7\) 取模,多组数据。
数据范围: \(1 \le T\le 10^4, 1\le n, m\le 2\times 10^5, 0\le k\le 10^6\)。
数据保证不存在同一位置的障碍物,并且 \(\sum k \le 10^6\)。
Solution
https://ac.nowcoder.com/discuss/411541?type=101&order=0&pos=4&page=0
Code(咕咕咕)
// Author: wlzhouzhuan
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define rint register int
#define rep(i, l, r) for (rint i = l; i <= r; i++)
#define per(i, l, r) for (rint i = l; i >= r; i--)
#define mset(s, _) memset(s, _, sizeof(s))
#define pb push_back
#define pii pair <int, int>
#define mp(a, b) make_pair(a, b)
inline int read() {
int x = 0, neg = 1; char op = getchar();
while (!isdigit(op)) { if (op == '-') neg = -1; op = getchar(); }
while (isdigit(op)) { x = 10 * x + op - '0'; op = getchar(); }
return neg * x;
}
inline void print(int x) {
if (x < 0) { putchar('-'); x = -x; }
if (x >= 10) print(x / 10);
putchar(x % 10 + '0');
}
const int N = 2000001;
struct node {
int x, y;
friend bool operator < (const node &a, const node &b) {
if (a.x != b.x) return a.x < b.x;
else return a.y < b.y;
}
} a[N];
int f[N];
int find(int x) {
return f[x] == x ? x : f[x] = find(f[x]);
}
void Union(int x, int y) {
x = find(x), y = find(y);
if (sz[x] > sz[y]) { // 小的合并到大的上面
fa[y] = x;
sz[x] += sz[y];
} else {
fa[x] = y;
sz[y] += sz[x];
}
}
void add_row() {
lists[++row].clear();
}
void add_line(int l, int r, ll s) {
col++;
fa[col] = col, sz[col] = s;
lists[row].pb({l, r, col});
}
int main() {
for (int _ = read(); _; _--) {
n = read(), m = read(), k = read();
for (int i = 1; i <= k; i++) {
a[i].x = read(), a[i].y = read();
}
sort(a + 1, a + k + 1);
if (k == 0) {
add_row();
}
}
}
[第18届 科大讯飞杯 J] 能到达吗的更多相关文章
- Java实现第十届蓝桥杯JavaC组第十题(试题J)扫地机器人
扫地机器人 时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分 [问题描述] 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人 ...
- 第十届蓝桥杯省赛JavaB组个人题解
前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...
- 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)
先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...
- 第十届蓝桥杯JavaB组省赛真题
试题 A: 组队 本题总分:5 分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示. ...
- 第六届蓝桥杯软件类省赛题解C++/Java
第六届蓝桥杯软件类省赛题解C++/Java 1[C++].统计不含4的数字统计10000至99999中,不包含4的数值个数.答:暴力循环范围内所有数字判断一下就是了,答案是52488 1[Java]. ...
- 第十届蓝桥杯2019年C/C++ 大学B组省赛试题
2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组 试题 A:组队 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每位球 ...
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛
/* 2016年第七届蓝桥杯C/C++程序设计本科B组省赛 煤球数目(结果填空) 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形) ...
- 2019年第十届蓝桥杯【C++省赛B组】
试题 A: 组队 本题总分:5 分 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容.每位球员担任 1 号位至 5 号位时的评分如下表所示.请你计算首发阵容 ...
- 第十届蓝桥杯JavaC组省赛真题
试题 A: 求和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2.9.10 至 32.39 和 40,共 28 个,他们的 ...
随机推荐
- C#复杂XML反序列化为实体对象两种方式
前言 今天主要讲的是如何把通过接口获取到的Xml数据转换成(反序列化)我们想要的实体对象,当然Xml反序列化和Json反序列化的方式基本上都是大同小异.都是我们事先定义好对应的对应的Xml实体模型,不 ...
- Spark周总结(一)
本周学习内容: 1.搭建虚拟机Spark环境 2.idea编写Scala脚本并在yarn上运行 总结: 这周是回家第一周,虽然没啥事,但是还是想放松放松,也是万事开头难,跟着教程做,但总有几步跟教程上 ...
- 微信小程序插件组件-Taro UI
微信小程序组件使用以下官网查看 ↓ ↓ ↓ https://taro-ui.jd.com/#/docs/fab
- scss使用方法以及相关内容
我们平时都称之为 Sass,其实可分成sass和scss, 其中Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),以".sass"后缀为扩展名:而 SCSS ...
- 在 WASI 上运行 .NET 7 应用程序
WASI代表 WebAssembly 系统接口,WASI 让沙盒化的 WebAssembly 应用程序通过一系列类似 POSIX 的函数访问底层操作系统,允许独立于浏览器运行 WebAssembly ...
- NLP---word2vec的python实现
import logging from gensim.models import word2vec import multiprocessing # 配置日志 logging.basicConfig( ...
- Java实现单链表的合并(保证数据的有序性)
一.思路 1.比较两个链表的大小 2.将小链表插入到大链表中 3.使用插入保证链表数据的有序性 二.核心代码 /** * 合并两个链表,并且按照有序合并 * @param singleLinkedLi ...
- Ubu18下cpptest安装
1.环境安装 sudo apt install g++ sudo apt install automake sudo apt install autoconf sudo apt install lib ...
- 从电路到UI系列之一——常见显示控制接口的认识
引入 我之前有两方面的使用屏幕的案例.在做的模块上需要用到屏幕来显示的时候,全是SPI屏幕,并口屏幕和IIC屏幕.在研究了驱动(或者是绘图函数更加合适)之后,我发现其实他们就是直接写显存,这个显存在面 ...
- 内存之旅——如何提升CMA利用率?
(以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 宋远征 李佳伟 OpenAtom OpenHarmony(以下简称"OpenHarmony") ...