D - Grid and Magnet

2024-04-28 05:04
文章标签 grid magnet

本文主要是介绍D - Grid and Magnet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路:标记一下磁铁周围的空地即可,每个连通块一定可以互相到达,我们dfs算出联通块的大小再加上该连通块周围的可达磁场区域即可。

代码:

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;int main() {ios::sync_with_stdio(false);cin.tie(nullptr), cout.tie(nullptr);int n, m;cin >> n >> m;vector vis(n, vector(m, false));vector<string> mp(n);for (int i = 0; i < n; i++) {cin >> mp[i];}const int dr[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};auto check = [&](int x, int y) {return (x >= 0 && x < n && y >= 0 && y < m);};auto magnets = [&](int x, int y) {for (int d = 0; d < 4; d++) {int nx = x + dr[d][0], ny = y + dr[d][1];if (check(nx, ny) && mp[nx][ny] == '#') {return true;}}return false;};int tag = 0;vector vtag(n, vector(m, 0));auto dfs = [&](auto &&self, int x, int y) -> int {if (vis[x][y] || mp[x][y] == '#') {return 0;}if (magnets(x, y)) {if (vtag[x][y] == tag) {return 0;}vtag[x][y] = tag;return 1;}vis[x][y] = true;int res = 1;for (int d = 0; d < 4; d++) {int nx = x + dr[d][0], ny = y + dr[d][1];if (check(nx, ny)) {res += self(self, nx, ny);}}return res;};int ans = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {++tag;ans = max(ans, dfs(dfs, i, j));}}cout << ans << '\n';return 0;
}

这篇关于D - Grid and Magnet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

「R绘图」grid学习笔记之grid.layout

grid.layout用于在一个视图上创建多个图层。大部分参数都很好理解,例如nrow和ncol就是声明行和列各有多少个图层。widths和heigths则是声明行高和列宽。比较难以理解的是参数,respect的参数说明是 If a logical, this indicates whether row heights and column widths should respect each

css grid实现九宫格布局

常见的九宫格布局可以使用flex布局实现,但是flex布局有个致命的缺陷,比如3行3列的布局,当第不足3个元素的时候,元素依然是平局平铺的,这样就不满足九宫格的效果,这种情况,使用grid布局可以轻松搞定这个问题            html布局 <div class="layout"><div class="item">1</div><div class="item">2</

mac苹果窗口辅助工具:Magnet for mac 2.14.0中文免激活版

Magnet 是一款针对 MacOS 系统的窗口管理工具软件。它能够帮助用户更加高效地管理和组织桌面上的窗口,通过简单的快捷键操作,可以将窗口自动调整到指定的位置和大小,实现多窗口快速布局。Magnet 还支持多显示器环境下的窗口管理,可以让用户更加轻松地在多屏幕之间切换和布局窗口。此外,Magnet 还提供了一些额外的功能,如窗口最大化、屏幕分割和调整窗口间的间距等。 下载地址:点击下载

示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局

一、目的:应用Grid的SharedSizeGroup设置整齐的布局 二、实现 <ItemsControl ItemsSource="{local:GetStudents Count=5}"><ItemsControl.ItemTemplate><DataTemplate><Grid ShowGridLines="True"><Grid.ColumnDefinitions><ColumnD

CSS Grid栅格布局

CSS 网格布局(Grid Layout) 是CSS中最强大的布局系统。 这是一个二维系统,这意味着它可以同时处理列和行,不像 flexbox 那样主要是一维系统。 你可以通过将CSS规则应用于父元素(成为网格容器)和该元素的子元素(网格元素),来使用网格布局。 引言 CSS网格布局(又名“网格”)是一个二维的基于网格的布局系统,其目的只在于完全改变我们设计基于网格的用户界面的方式。 CSS一

还在用Flex布局?OUT了 快来看看grid布局吧!

还在用Flex布局?OUT了 快来看看grid布局吧! 之前我在写布局的时候就喜欢用flex,有一次我需要实现四个方块占一行的需求 ,But 一共有七个方块到了第二行很Egg疼 ,第二行它直接三个方块居中排布, 这三兄弟直接在第二行玩了居中排布,最后 我还是用flex布局解决这个问题 只不过我需要计算宽度以及边距 目的为了让他们一行四个 然后取消 justify-content: space-b

【python】tkinter编程三大布局管理器pack、grid、place应用实战解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

LogicFlow 学习笔记——6. LogicFlow 基础 网格 Grid

网格 Grid 网格是渲染或移动节点时的基本单元。其主要功能是在节点移动过程中,确保每个节点的中心点都精准落在网格点上,这大大有利于节点之间的精确对齐。通常,网格的间距越大,流程图编辑时的对齐越为便捷;反之,间距越小,节点拖动的操作感会更加流畅。 默认情况下,网格是关闭的,最小的渲染/移动单位是1px。如果启用网格功能,则默认的网格大小为20px,这意味着节点在渲染时会以20px为单位进行对齐

DevExpress WPF中文教程:Grid - 如何完成列和编辑器配置(设计时)?

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。 本教程将演示如何调整网格

QGroupbox,Grid Layout,button 水平延伸 布局

实验 sizePolicy水瓶延伸 拖入一个groupbox控件 在groupbox控件中拖入一个grid layout 控件 然后拖入3个pushButton 使其水平排列, 设置button3的 sizePolicy 水平延展 为1 效果