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

相关文章

LibSVM学习(六)——easy.py和grid.py的使用

我们在“LibSVM学习(一)”中,讲到libSVM有一个tools文件夹,里面包含有四个python文件,是用来对参数优选的。其中,常用到的是easy.py和grid.py两个文件。其实,网上也有相应的说明,但很不系统,下面结合本人的经验,对使用方法做个说明。        这两个文件都要用python(可以在http://www.python.org上下载到,需要安装)和绘图工具gnup

Magnet GRAYKEY

Magnet GRAYKEY(现已开放购买,付费询价,白嫖勿扰) Magnet GRAYKEY 是最先进、最独特的解决方案,用于解锁和恢复 iOS 和 Android 设备的数据,包括完整的文件系统、钥匙串解密和操作内存。 更快的手机取证有助于加快案件进度。 GRAYKEY 磁铁可以在同一天解锁最新的 iOS 和 Android 设备,通常在 1 小时内。 Magnet GRAYKEY 和 Mag

extjs 获取grid的选中行的某列的值

我的情景是这样的:一个grid(就叫gridA吧),最后一列的每行都是超链接,点击超链接时会弹出一个窗体,这个窗体也需要一个grid(gridB)展示,并且呢,gridB所需的数据需要gridA里的某列的值(把这个列叫做Param)作为参数。于是就产生了点击gridA的某行的超链接,获取该行的Param列的值这样的需求。 不知道为什么,我用var param=this.grid..getSe

Extjs Grid 根据列的值(0或者1)显示“是或否”

grid中:{header:'是否解析',dataIndex:'isExplain',align:'center',sortable: true,renderer:isResend}, 写一个函数: function isResend(data, metadata, record){ var resend; if(record.data.isExplain==0){resend="否";

extjs中grid,设置CheckboxSelectionModel的默认值

Grid(命名为BasicGrid)中定义了:this.sm = new Ext.grid.CheckboxSelectionModel();。表示一列checkBox。 情景:上面Grid所在的窗口弹出之后,选择一项(我这里是只选一项)点击确定之后关闭该窗口。当需要再次弹出该窗口时,把刚刚已经选择的那一项打上勾。下面是方法:我是写在弹出该窗口的方法中的。

AngularJS的ui-grid的列表数据实现换行

在公共css中添加如下: .ui-grid-cell-contents-break { padding: 5px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; overflow: hidden; height: 100%; word-break: break

【ag-grid】列宽设置不生效探索

发现使用sizeColumnsToFit()会覆盖默认设置的宽度 解决方案1 给某一列的列定义设置为suppressSizeToFit设置为:true 核心代码: gridColumns: (ColDef | ColGroupDef)[] = [{checkboxSelection: true,headerCheckboxSelection: true,suppressSizeToFit:

vue3 vxe-grid 当前高亮行的背景颜色+字体颜色,要求随着主题的颜色的改变而改变。

1、先上个图: 2、点击的行的颜色与字体的颜色,并没有随时主题的颜色而改变: const gridOptions = reactive<BasicTableProps>({id: 'userTable',showHeaderOverflow: false,showOverflow: true,keepSource: true,columns: userColumns,pagerConfig

F - Rook on Grid 矩阵 侧面视角 树状数组

两种走法 先下再右 吃到的就是L[i]-1个 先右再下 就吃剩的哈哈 每个L[i]挡住的阴影部分 才是有效的吃到部分 关于阴影 🔥可以想象从矩阵右侧有光线照进来。然后被障碍物挡住的那些空格。 处理方式可以按照列扫过去。一边用树状数组维护那些有阴影的行 实现的主要部分就是怎么去维护那些阴影。 小tip:>=r[i]都当做第一列开始就有阴影 题目 #include <bits/stdc++.h>

C# wpf Grid中实现控件拖动调整大小

WPF拖动改变大小系列 第一节 Grid内控件拖动调整大小(本章) 第二节 Canvas内控件拖动调整大小 第三节 窗口拖动调整大小 第四节 附加属性实现拖动调整大小 第五章 拓展更多调整大小功能 文章目录 WPF拖动改变大小系列前言一、功能说明二、如何实现?1.继承Adorner2.使用Thumb3.实现拖动逻辑 三、完整代码四、使用示例总结 前言 在《C# wpf