【蓝桥杯-Even Parity】

蓝桥杯-Even Parity


洛谷 UVA11464 Even Parity

在这里插入图片描述
暴力思路:
去遍历每个元素,如果不符合要求则翻转
时间复杂度大概在O(2^(n×n) × n×n)

改进思路:
先去枚举确定第一行(第一行得合法),然后为保证第一行每个元素为偶数和去确定第二行;为保证第二行每个元素为偶数和去确定第三行。以此逐行检索。
最后对最后一行进行偶数和验证,如果满足要求,则方案合理。

#include<bits/stdc++.h>

using namespace std;

const int N = 20;
int grid[N][N], tmp[N][N], n;

int check()
{
	for (int i = 2; i <= n; i++)//生成接下来的行数 
		for (int j = 1; j <= n; j++)
		{
			int sum = 0;
			if (i > 2)sum += tmp[i - 2][j];//上 
			if (i > 1 && j > 1)sum += tmp[i - 1][j - 1];//左 
			if (i > 1 && j < n)sum += tmp[i - 1][j + 1];//右 
			tmp[i][j] = sum & 1;//sum为偶tmp为偶,sum为奇tmp为奇 
			if (tmp[i][j] == 0 && grid[i][j] == 1)return n * n + 1;//1改0 非法 

		}
	for (int j = 1; j <= n; j++)//检查第n行是不是合法 
	{
		int sum = 0;
		if (n > 1)sum += tmp[n - 1][j];//上 
		if (j > 1)sum += tmp[n][j - 1];//左 
		if (j < n)sum += tmp[n][j + 1];//右
		if (sum & 1) return n * n + 1;//sum所得为奇数,不满足要求,退出 
	}

	int cnt = 0;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			cnt += (grid[i][j] != tmp[i][j] ? 1 : 0);//统计修改次数 
	return cnt;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			cin >> grid[i][j];//存给定的原来的矩阵 

	int ans = n * n + 1;

	for (int state = 0; state < (1 << n); state++)//对第一行枚举每种可能 
	{
		bool valid = true;
		for (int j = 1; j <= n; j++)
		{
			if ((state >> (j - 1)) & 1)//state为1就是改变
			{
				if (grid[1][j] == 1)//原来就是1,1变0不合法
				{
					valid = false;
					break;
				}
				else tmp[1][j] = 1;//原来是0,变1合法
			}
			else
			{
				tmp[1][j] = grid[1][j];//state为0不改变直接赋值
			}
		}
		if (valid)ans = min(ans, check());//去检查接下来的行数,取修改数最小的 
	}
	cout << (ans == n * n + 1 ? -1 : ans) << endl;
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达:AI 智能体的四种模式

一、背景 吴恩达在《What’s next for AI agentic workflows ft》分享中提出 AI 智能体的四种模式。 反思&#xff08;Reflection&#xff09;&#xff1a; LLM 检查自己的工作&#xff0c;以提出改进方法。 使用工具&#xff08;Tool use&#xff09;&#xff1a;LLM 拥有…

从神经元到深度学习:探索多层感知机与卷积神经网络的奥秘

深度学习&#xff1a;探索未来的钥匙 在当今技术飞速发展的时代&#xff0c;深度学习已成为科技界的一颗璀璨明珠&#xff0c;它不仅推动了人工智能的边界扩展&#xff0c;还在诸多领域中展现出了巨大的应用潜力。从自动驾驶汽车、语音识别到医疗诊断&#xff0c;深度学习正在…

【运输层】网络数据报协议 UDP

目录 1、UDP 的特点 2、UDP 的首部格式 UDP 只在 IP 协议之上增加了很少的一些功能&#xff0c;比如复用、分用以及差错检测等。 1、UDP 的特点 UDP是无连接的&#xff0c;即发送数据之前不需要建立连接&#xff0c;因此减少了开销和发送数据之前的时延。 UDP使用尽最大努力…

防止推特Twitter账号被冻结,应该选什么代理类型IP?

在处理多个 Twitter 帐号时&#xff0c;选择合适的代理IP对于避免大规模帐户暂停至关重要。现在&#xff0c;问题出现了&#xff1a;哪种类型的代理是满足您需求的最佳选择&#xff1f;下面文章将为你具体讲解推特账号冻结原因以及重点介绍如何选择代理IP。 一、推特账号被冻结…

RUST语言基本数据类型认识

1.RUST的基本数据类型参考: 2.使用RUST数据类型声明变量并赋值: let a:i81;//8位有符号整数let a1:u82;//8位无符号整数let b:i161;//16位有符号整数let b1:u162;//16位无符号整数let c:i321;//32位有符号整数let c1:u322;//32位无符号整数let d:i641;//64位有符号整数let d1:u…

Python机器学习实验 Python 数据分析

1.实验目的 掌握常见数据预处理方法&#xff0c;熟练运用数据分析方法&#xff0c;并掌握 Python 中的 Numpy、 Pandas 模块提供的数据分析方法。 2.实验内容 1. Pandas 基本数据处理 使用 Pandas 模块&#xff0c;完成以下操作。 &#xff08;1&#xff09;创建一个由 0 到 50…

windows消息机制--1基本概念解释

基本概念解释 我们在编写标准C程序的时候,经常会调用各种库函数来辅助完成某些功能&#xff1a;初学者使用得最多的C库函数就是printf了&#xff0c;这些库函数是由你所使用的编译器厂商提供的。在Windows平台下&#xff0c;也有类似的函数可供调用&#xff1a;不同的是&#…

UE4_普通贴图制作法线Normal材质

UE4 普通贴图制作法线Normal材质 2021-07-02 10:46 导入一张普通贴图&#xff1a; 搜索节点&#xff1a;NormalFromHeightmap 搜索节点&#xff1a;TextureObjectparameter&#xff0c;并修改成导入的普通贴图&#xff0c;连接至HeightMap中 创建参数normal&#xff0c;连接…

docker部署nacos,单例模式(standalone),使用内置的derby数据库,简易安装

文章目录 前言安装创建文件夹docker指令安装docker指令安装-瘦身版 制作docker-compose.yaml文件查看页面 前言 nacos作为主流的服务发现中心和配置中心&#xff0c;广泛应用于springcloud框架中&#xff0c;现在就让我们一起简易的部署一个单例模式的nacos&#xff0c;版本可…

【深度学习】图像自然语言描述生成

案例 6&#xff1a;图像自然语言描述生成&#xff08;让计算机“看图说话”&#xff09; 相关知识点&#xff1a;RNN、Attention 机制、图像和文本数据的处理 1 任务目标 1.1 任务和数据简介 ​ 本次案例将使用深度学习技术来完成图像自然语言描述生成任务&#xff0c;输入…

Unity开发者3D模型基础

术语“3D 建模”是指使用特殊软件创建对象或表面的 3D 数字表示的过程。 3D 模型可用于各种不同的目的&#xff0c;包括电影、视频游戏、建筑和工程。 3D 建模也是创建虚拟现实 (VR) 和增强现实 (AR) 体验工作的重要组成部分。 我们通常通过构建或获取 3D 模型并将其导入 Unit…

设置win32程序的窗口过程为自定义的窗口过程

Win32 SetWindowLong函数的第二个参数是一个整型,可以取不同的值,根据此值设置窗口的不同的属性;如果设为 GWL_WNDPROC 则可以为窗口设置一个另外的窗口过程; VC6新建一个win32项目,类型选为 典型helloworld 程序; 资源中添加一个菜单, 总的代码如下; // setproc.cp…

NineData云原生智能数据管理平台新功能发布|2024年3月版

数据库 DevOps - 大功能升级 SQL 开发早期主要提供 SQL 窗口&#xff08;IDE&#xff09;功能&#xff0c;在产品经过将近两年时间的打磨&#xff0c;新增了大量的企业级功能&#xff0c;已经服务了上万开发者&#xff0c;覆盖了数据库设计、开发、测试、变更等生命周期的功能…

正则表达式完全指南:语法、用法及JavaScript实例

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

K8s Deployment 滚动更新、金丝雀发布、自定义钩子、生命周期解析

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、Deployment的高级特性 1、滚动更新 2、金丝雀…

harmonyOS的客户端存贮

什么是客户端存贮 在harmonyOS中,客户端存贮是指将数据存贮在本地设备以供应用程序使用; 注: 和feaureAblity搭配使用,content上下文的获取依赖该API如下: // 引入: import featureAbility from ohos.ability.featureAbility;// 使用: let content featureAbility.getConten…

STM32串口认识

常用函数介绍 串口发送/接收函数 HAL_UART_Transmit(); 串口发送数据&#xff0c;使用超时管理机制&#xff08;即在发送成功前一直阻塞&#xff0c;相当于有个delay&#xff08;&#xff09;在卡住主函数&#xff09; HAL_UART_Receive(); 串口接收数据&#xff0c;使用超时…

极简云验证 download.php 文件读取漏洞复现

0x01 产品简介 极简云验证是一款开源的网络验证系统&#xff0c;支持多应用卡密生成&#xff1a;卡密生成 单码卡密 次数卡密 会员卡密 积分卡密、卡密管理 卡密长度 卡密封禁 批量生成 批量导出 自定义卡密前缀等&#xff1b;支持多应用多用户管理&#xff1a;应用备注 应用版…

Android JNI基础

目录 一、JNI简介1.1 什么是JNI1.2 用途1.3 优点 二、初探JNI2.1 新建cpp\cmake2.2 build.gradle配置2.3 java层配置2.4 cmake和c 三、API详解3.1 JNI API3.1.1 数据类型3.1.2 方法 3.2 CMake脚本 四、再探JNI 一、JNI简介 1.1 什么是JNI JNI&#xff08;Java Native Interfa…

开源软件技术社区方案

开源软件技术社区是一个由开发者、贡献者、用户和维护者组成的共享平台&#xff0c;主要目的是打造技术、软件产品良性互动、开源技术安全可控的软件生态环境&#xff0c;实现可复用应用或服务的快速部署与使用、完成资源与能力的高度共享、促进社区成员的共建共赢&#xff0c;…