AcWing 1250. 格子游戏 (并查集,坐标变换)

2024-03-22 21:44

本文主要是介绍AcWing 1250. 格子游戏 (并查集,坐标变换),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

记录此题的目的:

  • 明确二维的坐标可以映射到一维:在x和y都是从0开始的前提下,假如图形列数为n,(x,y)映射到一维可以写成x * n + y。
  • 并查集并不好存储二维数据,如果遇到二维数据可以将其映射到一维。

Alice和Bob玩了一个古老的游戏:首先画一个 n × n n×n n×n 的点阵(下图 n = 3 n=3 n=3 )。

接着,他们两个轮流在相邻的点之间画上红边和蓝边:

在这里插入图片描述

直到围成一个封闭的圈(面积不必为 1 1 1 )为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了,他们的游戏实在是太长了!

他们甚至在游戏中都不知道谁赢得了游戏。

于是请你写一个程序,帮助他们计算他们是否结束了游戏?

输入格式
输入数据第一行为两个整数 n n n m m m n n n 表示点阵的大小, m m m 表示一共画了 m m m 条线。

以后 m 行,每行首先有两个数字 ( x , y ) (x,y) (x,y),代表了画线的起点坐标,接着用空格隔开一个字符,假如字符是 D,则是向下连一条边,如果是 R就是向右连一条边。

输入数据不会有重复的边且保证正确。

输出格式
输出一行:在第几步的时候结束。

假如 m m m 步之后也没有结束,则输出一行draw

数据范围
1 ≤ n ≤ 200 , 1≤n≤200, 1n200
1 ≤ m ≤ 24000 1≤m≤24000 1m24000

输入样例:

3 5
1 1 D
1 1 R
1 2 D
2 1 R
2 2 D

输出样例:

4

一道并查集的裸题。
首先游戏的结束是指有任何一部分连成了环,而连成环的条件就是有一个点连上了和它连通的点,也就是他们两个在同一个集合里。

主要难点,考察点是如果记录数据,这里采用将二维坐标映射到一维的做法。
使用公式: x ∗ ( 列数 ) + y x * (列数) + y x(列数)+y

代码:

#include<iostream>
using namespace std;
const int N = 210;int p[N * N];
int n, m;int find(int x) {if (p[x] != x)p[x] = find(p[x]);return p[x];
}int main() {cin >> n >> m;for (int i = 0; i <= n * n+1; i++)p[i] = i;int ans = 0;bool has_answer = 0;for(int i = 1;i <= m;i++) {int x, y; cin >> x >> y;x--,y--;int a = x * n + y;  //映射到一维char op; cin >> op;int b;if(op == 'D')b = (x+1)*n + y;else b = x * n + y + 1;if(find(a) == find(b)){has_answer = 1;ans = i;break;}else{p[find(a)] = find(b);}}if (has_answer)cout << ans;else cout << "draw";return 0;
}

这篇关于AcWing 1250. 格子游戏 (并查集,坐标变换)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/836250

相关文章

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

poj 1182 并查集 食物链类

题意: 有n只动物,分别编号1....n。所有动物都属于A,B,C中的一种,已知A吃B,B吃C,C吃A。 按顺序给出下面两种共K条信息: 1. x 和 y 属于同一类。 2. x 吃 y 。 然而这些信息可能会出错,有可能有的信息和之前给出的信息矛盾,也有的信息可能给出的 x 和 y 不在n的范围内。 求k条信息中有多少条是不正确的。 解析: 对于每只动物,创建3个元素 i

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

POJ1988带权并查集

M u v 将u所在的堆移动到v所在的堆的上面 C u 求u的下面有多少块 带权并查集 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;i

POJ1703带权并查集

D: u v  u与v在不同的集合 A: u v  查询u与v的关系 1)压缩路径过程        fu->root   0  1  u-fu 0                 0  1   1                 1  0 2)合并过程 fu->fv      u->fu   0 1   v->fv 0            1 0 1            0

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

Verybot之OpenCV应用二:霍夫变换查找圆

其实我是想通过这个程序来测试一下,OpenCV在Verybot上跑得怎么样,霍夫变换的原理就不多说了,下面是程序: #include "cv.h"#include "highgui.h"#include "stdio.h"int main(int argc, char** argv){cvNamedWindow("vedio",0);CvCapture* capture;i

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

第四次北漂----挣个独立游戏的素材钱

第四次北漂,在智联招聘上,有个小公司主动和我联系。面试了下,决定入职了,osg/osgearth的。月薪两万一。 大跌眼镜的是,我入职后,第一天的工作内容就是接手他的工作,三天后他就离职了。 我之所以考虑入职,是因为 1,该公司有恒歌科技的freex平台源码,可以学学,对以前不懂的解解惑。 2,挣点素材钱,看看张亮002的视频,他用了6000多,在虚幻商城买的吸血鬼游戏相关的素材,可以玩两年。我