D. Matrix Cascade(结构体记录前面对后面的影响)

Problem - D - Codeforces

有一个大小为n×n的矩阵,由0和1组成。行从上到下编号为1到n,列从左到右编号为1到n。交点(x,y)表示第x行和第y列的单元格。

AquaMoon想将矩阵的所有元素都变为0。在一步操作中,她可以执行以下操作:

 

Plain Text

 
选择一个任意的单元格,假设为(i,j),然后翻转(i,j)中的元素,并翻转(x,y)中的所有元素,其中x>i且x−i≥|y−j|。翻转一个值意味着将其改变为相反值:0变为1,1变为0。

帮助AquaMoon确定她需要执行的最少步骤数,以将矩阵的所有元素变为0。我们可以证明答案总是存在。 输入

每个测试包含多个测试用例。第一行包含测试用例的数量t(1≤t≤105)。接下来是测试用例的描述。

每个测试用例的第一行包含一个整数n(2≤n≤3000)。

接下来的n行中的第i行包含一个二进制字符串,只包含字符0和1,长度为n。

保证所有测试用例中n2的总和不超过9000000。 输出

对于每个测试用例,打印最少的步骤数。 示例 输入 复制

3
5
00100
01110
11111
11111
11111
3
100
110
110
6
010101
111101
011110
000000
111010
001110

输出 复制

1

2

15

注意

在第一个测试用例中,我们可以使用以下方案:

 

Plain Text

 
在单元格(1,3)上执行操作。

显然,初始矩阵的元素并非全部为0,因此至少需要一次操作。因此,答案为1。

在第二个测试用例中,我们使用以下方案:

 

Plain Text

 
在单元格(3,3)上执行操作;
在单元格(1,1)上执行操作。

可以证明,在0或1步内无法将所有元素转换为0,因此答案正好为2。

题解:

很有意思的一道题,题意也很容易理解,如果操作一个点,向下一个扇形波范围内都会取反,最优肯定是从上往下,如果是1就操作,但是可能会操作很多次,点又有很多,所以很难去确定当前的状态,

我们用结构体来记录一个点的状态

val代表初始的0或1

u代表此时这个点处于多少波的影响下,如果此时这点处于一些波的影响,那么正下方的点也处于那些波的影响

l,r代表每个波除了向下传播之外,还会向左下和右下传播。所以记录每个点会替几个波向左下传播,替几个波向右下传播,然后把这两个属性赋给该点左下/右下的点,同时更新被传播的点的u:既然这些点被一些额外的波影响了,那么影响该点的波的数量自然会增加上这些波的数量。

每个点val +=此时这个点的u,如果%2 == 1要进行操作

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> PII;
const int N = 5e5 + 10;
struct node
{int val;int u;int l,r;
}a[3004][3004];
void solve()
{int n;cin >> n;for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){char c;cin >> c;a[i][j] = {0};a[i][j].val = c - '0';}}int ans = 0;for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){a[i][j].val += a[i][j].u;if(a[i][j].val%2 == 1){ans++;a[i][j].u ++;a[i][j].l++;a[i][j].r++;}a[i + 1][j].u += a[i][j].u;a[i + 1][j - 1].l += a[i][j].l;a[i + 1][j - 1].u += a[i][j].l;a[i + 1][j + 1].r += a[i][j].r;a[i + 1][j + 1].u += a[i][j].r;}}cout << ans <<"\n";
} 
//111011
signed main()
{int t = 1;ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> t ;	while(t--){solve();}
}
//环

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107883.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——(第十一章)软件包管理

目录 一、RPM 1.概述 2.RPM查询指令 3.RPM卸载指令 4.RPM安装命令 二、YUM 1.概述 2.YUM常用命令 一、RPM 1.概述 RPM&#xff08;RedHat Package Manager&#xff09;&#xff0c;RedHat软件包管理工具&#xff0c;类似windows里面的setup.exe是Linux这系列操作系统里…

IDEA中的“Deployment“ 将项目直接部署到服务器上

ntelliJ IDEA中的"Deployment"工具栏是一个方便的工具&#xff0c;用于将你的项目直接部署到服务器上。这个工具栏提供了三种部署的方式&#xff1a; 1.Web Server在本地电脑上&#xff0c;并且服务器运行目录也在项目目录下。 2.Web Server在本地电脑上&#xff0c;…

ArcGIS10.1软件安装教程

ArcGIS10.1中英文&#xff08;32/64位)下载地址&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1Ksm112WaKMMk6La9ircCng 密码&#xff1a;t70f 安装步骤&#xff1a; 1、我们对安装包进行解压&#xff0c;直接鼠标右击解压即可。 2、 打开我们解压的文件夹&#…

MySQL安装validate_password_policy插件

功能介绍 validate_password_policy 是插件用于验证密码强度的策略。该参数可以设定三种级别&#xff1a;0代表低&#xff0c;1代表中&#xff0c;2代表高。 validate_password_policy 主要影响密码的强度检查级别&#xff1a; 0/LOW&#xff1a;只检查密码长度。 1/MEDIUM&am…

宇凡微发布2.4G合封芯片YE08,融合高性能MCU与射频收发功能

宇凡微在2023年推出了全新的2.4G合封芯片YE08&#xff0c;该芯片结合了32位高性能MCU和强大的2.4GHz无线通信功能&#xff0c;为各种远程遥控应用提供卓越性能和广泛应用潜力。 深入了解YE08内部构造 YE08芯片内部融合了两颗强大的芯片&#xff1a;PY32F002B MCU和G350 2.4G通…

2023年智能家居占消费电子出货量28%,蓝牙Mesh照明占据重要位置

市场研究机构 TechInsights 的最新报告显示&#xff0c;预计 2023 年全球消费者在智能家居相关硬件、服务和安装费方面的支出将复苏&#xff0c;达到 1310 亿美元&#xff0c;比 2022 年增长 10%。TechInsights 表示&#xff0c;消费者在智能家居系统和服务上的支出将继续强劲增…

SLAM ORB-SLAM2(1)总体框架

SLAM ORB-SLAM2(1)总体框架 1. 简介2. 框架3. TRACKING4. LOCAL MAPPING5. LOOP CLOSING6. MAP1. 简介 ORB-SLAM2 是一个实时和完整的视觉SLAM系统(包括闭环检测、重定位、地图重用等功能) 提供了利用单目、双目以及RGB-D相机完成稀疏三维重建的功能和接口 2. 框架 总体来说…

实现JSONP请求

同源策略 JavaScript 的浏览器都会使用这个策略。所谓同源是指&#xff0c;域名&#xff0c;协议&#xff0c;端口相同。 而所有非同源的请求&#xff08;即 域名&#xff0c;协议&#xff0c;端口 其中一种或多种不相同&#xff09;&#xff0c;都会被作为跨域请求。实际上请求…

冠达管理:“A股”上热搜,个股普跌!这一概念,逆市掀涨停潮

A股商场和港股商场今天上午再度低位震动&#xff0c;“A股”词条冲上微博热搜。 ​ A股商场方面&#xff0c;主要指数均跌落&#xff0c;创业板指创年内新低&#xff0c;TMT赛道团体走低&#xff0c;拖累商场人气。上午海峡西岸概念板块成为商场最大亮点之一&#xff0c;个股…

Hexo在多台电脑上提交和更新

文章目录 1.博客搭建2.创建一个新文件夹new&#xff0c;用于上传hexo博客目录3.github上创建hexo分支并设置为默认分支创建hexo分支将hexo分支设置为默认分支 4.进入新建的文件夹中git clone&#xff0c;再上传相关文件至hexo分支1.clone下来的文件夹内应该有个.gitignore文件&…

MAC M1芯片安装mounty读写移动硬盘中的文件

因为移动硬盘中的文件是微软公司NTFS格式&#xff0c;MAC只支持自己的APFS或者HFS&#xff0c;与微软的NTFS不兼容&#xff0c;所以需要第三方的软件来支持读写硬盘中的文件&#xff0c;经过一上午的折腾&#xff0c;最终选择安装mounty这个免费的第三方软件 工具网址连接&am…

线性代数的学习和整理19,特征值,特征向量,以及引入的正交化矩阵概念(草稿)

目录 1 什么是特征值和特征向量&#xff1f; 1.1 特征值和特征向量这2个概念先放后 1.2 直观定义 1.3 严格定义 2 如何求特征值和特征向量 2.1 方法1&#xff1a;结合图形看&#xff0c;直观方法求 2.1.1 单位矩阵的特征值和特征向量 2.1.2 旋转矩阵 2.2 根据严格定义…