牛客周赛 59 小红的X型矩阵

server/2024/9/22 23:44:31/

原题链接:E-小红的X型矩阵

题意:给n*n的矩阵,矩阵的元素只有0和1。有二种操作,第一种是让矩阵循环右移,或者循环下移。第二种是让某个元素从0变成1,或者从1变成0。问至少几次操作二可以让矩阵变成x矩阵,x矩阵的定义是对角线上都是1,其余都是0。

思路:前缀和。矩阵的循环右移和下移操作不会影响答案,那么这些操作会怎么样的影响这个矩阵?会形成(n-1)*(n-1)种不同形态的矩阵,这些矩阵如果是依次枚举出来,时间复杂度和空间复杂度都要上天。经过观察可以发现如果将n*n的矩阵拓展成2n*2n的矩阵,那么这个矩阵里面的n*n的小矩阵会形成(n-1)*(n-1)种不同形态的矩阵。那么就可以让矩阵循环展开成2n*2n的矩阵,那么就相当于给你一个n*n的矩阵,每次可以让一个元素改变,问变成x矩阵的最小次数,就可以直接用前缀和来解决了。

//冷静,冷静,冷静
//调不出来就重构
//#pragma GCC optimize(2)
//#pragma GCC optimize("O3")
#include<bits/stdc++.h>
#define count2(x) __builtin_popcountll(x)
#define is2(x) __builtin_ffsll(x)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pii;
const int N=1e6+10,mod=1000000007;
char mp[2010][2010];
ll pre[2010][2010],l[2010][2010],r[2010][2010];
void Jiuyuan()
{ll n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>mp[i][j];mp[i][j+n]=mp[i][j];mp[i+n][j]=mp[i][j];mp[i+n][j+n]=mp[i][j];}}for(int i=1;i<=2*n;i++){for(int j=1;j<=2*n;j++){pre[i][j]=(mp[i][j]=='1')+pre[i][j-1]+pre[i-1][j]-pre[i-1][j-1];}}for(int i=1;i<=2*n;i++){for(int j=1;j<=2*n;j++){l[i][j]=l[i-1][j-1]+(mp[i][j]=='1');}}for(int i=1;i<=2*n;i++){for(int j=2*n;j>=1;j--){r[i][j]=r[i-1][j+1]+(mp[i][j]=='1');}}ll min1=1e18;for(int i=n;i<=2*n;i++){for(int j=n;j<=n*2;j++){ll x=i-n+1,y=j-n+1;ll zhi=pre[i][j]-pre[x-1][j]-pre[i][y-1]+pre[x-1][y-1];ll v=l[i][j]-l[x-1][y-1]+r[i][y]-r[x-1][j+1];zhi=zhi-(l[i][j]-l[x-1][y-1]);zhi=zhi-(r[i][y]-r[x-1][j+1]);if(n&1){if(mp[(x+i)/2][(y+j)/2]=='1'){zhi++;v--;}}min1=min(min1,zhi+2*n-(n&1)-v);}}cout<<min1<<endl;
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll T=1;
//	cin>>T;while(T--){Jiuyuan();}return 0;
}


http://www.ppmy.cn/server/116239.html

相关文章

关于 PC打开“我的电脑”后有一些快捷如腾讯视频、百度网盘、夸克网盘、迅雷等各种捷方式在磁盘驱动器上面统一删除 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142029325 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

UNI-APP 富文本编辑器,可以对图片、文字格式进行编辑和混排。

✍找了几篇文章对比了一下&#xff0c;大体都差不多各有各的说辞和见解,但是没有提供/style/editor-icon.css文件&#xff0c;找起来虽然说不算太麻烦&#xff0c;但是不够直接&#xff0c;又要花费时间去弄&#xff0c;虽然用的不是很多但是&#xff0c;我还是决定自己写一篇&…

【系统架构设计师】工厂方法设计模式

工厂方法(Factory Method)模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法让类的实例化延迟到子类中进行。 工厂方法模式的主要角色 产品(Product):定义工厂的创建对象的接口。具体产品(Concrete Product):实…

动手学深度学习(pytorch)学习记录25-汇聚层(池化层)[学习记录]

目录 汇聚层(池化层)&#xff1a;填充和步幅多通道 汇聚层(池化层)&#xff1a; 降低卷积层对位置的敏感性&#xff0c;同时降低对空间降采样表示的敏感性。 汇聚层和卷积层的运动方式一样&#xff0c;从左上角向右下角移动指定步幅&#xff0c;汇聚层执行的是“采样”操作。…

PHP一键约课高效健身智能健身管理系统小程序源码

一键约课&#xff0c;高效健身 —— 智能健身管理系统让健康触手可及 &#x1f3cb;️‍♀️ 告别繁琐&#xff0c;一键开启健身之旅 你还在为每次去健身房前的繁琐预约流程而烦恼吗&#xff1f;现在有了“一键约课高效健身智能健身管理系统”&#xff0c;所有问题都迎刃而解…

如何缩放C#中的img

在C#中&#xff0c;你可以使用 System.Drawing 命名空间中的 Graphics 类来缩放图像。以下是缩放图像的一般步骤&#xff1a; 加载原始图像&#xff1a;使用 Image.FromFile 或 Bitmap.FromFile 方法加载原始图像。 创建缩放后的图像&#xff1a;创建一个新的 Bitmap 对象&…

腾讯发布大模型安全与伦理报告:以负责任AI引领大模型创新

前言 随着AI模型的能力日益更加强大&#xff0c;如何让其行为和目的跟人类的价值、偏好、伦理原则、真实意图之间实现协调一致&#xff0c;这个被称为人机价值对齐的问题变得越来越重要。价值对齐对于确保人类与人工智能协作过程中的信任与安全至关重要&#xff0c;已经成为AI…

海思SD3403(21AP10, 108DC2910 )4K60 的 ISP 图像处理能力,4Tops INT8算力

21AP10 是一颗面向市场推出的专业超高清智能网络录像机 SoC。该芯片最高支持四 路 sensor 输入&#xff0c;支持最高 4K60 的 ISP 图像处理能力&#xff0c;支持 3F WDR、多级降噪、六 轴防抖、硬件拼接等多种图像增强和处理算法&#xff0c;为用户提供了卓越的图像处理能力。…