UVA - 11464 Even Parity 【枚举+递推】

Java实现偶数矩阵(Even Parity, UVa 11464) 偶数矩阵(Even Parity, UVa 11464) 问题描述   给你一个n×n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1, 使得每个元素的上、下、左、右的元素(如果存在的话)之和均为偶数。 比如,如(a)所示的矩阵至少要把3个0变成1,最终如图(b)所示,才能保证其为偶数矩阵。 看图! 输入格式   输入的第一行为数据组数T(T≤30)。每组数据的第一行为正整数n(1≤n... 阅读详情

题目链接:https://cn.vjudge.net/problem/UVA-11464

 

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<queue>
#include<map>
#include<stack>
#include<sstream>
#include<vector>
#include<string>
#include<set>

using namespace std;

#define IOS ios::sync_with_stdio(false); cin.tie(0);

int read(){

    int r=0,f=1;char p=getchar();
    while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}
    while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}

typedef long long ll;
typedef unsigned long long ull;
const int Maxn = 20;
const long long LINF = 1e18;
const int INF = 0x3f3f3f3f;
const int Mod = 10001;

int a[Maxn][Maxn],b[Maxn][Maxn];

int solve (int n, int h) {
    memcpy(b,a,sizeof(b));  // 把a的值复制到b中,重复使用a
    int cnt = 0;
    for (int i = n; i > 0; --i)  {  // 把第一行的值用位运算赋值到b的第一行中
        b[1][i] = (h>>(n-i))&1;
        if(!b[1][i] && a[1][i]) return INF; // 如果发现 赋值后的值为0,原始值为1,直接返回INF,
        if(b[1][i] && !a[1][i]) cnt++;         //因为1不能转换为0
    }
    int tmp;      // 递推: 第一行确定为固定值,用第一行的值给第二行赋值 比如根据 b[1][2]+b[2][1]
    for (int i = 2; i <= n; ++i) {  // 来判断b[2][1]应该赋什么值,固定第一行,改变第二行的值
        for (int j = 1; j <= n; ++j) {  
            tmp = b[i-1][j+1]+b[i-1][j-1]+b[i-2][j]+b[i][j]; 
            if(tmp%2 != 0) {       //因为我是从1开始的,所以b[0]和b[n+1]的值都是0,不怕越界
                if(!b[i][j]) {
                    b[i][j] = 1;
                    cnt++;
                } else return INF;
            }
        }
    }
    for (int i = 1; i <= n; ++i) {  // 因为最后一行是根据n-1赋值的(n-1就可能满足条件),
        tmp = b[n][i-1]+b[n][i+1]+b[n-1][i]; //所以还要而外加多判断最后一行是否满足条件
        if(tmp%2 != 0) return INF;
    }
    return cnt;
}

int main (void)
{
    int t,n;
    scanf("%d",&t);
    for (int cas = 1; cas <= t; ++cas) {
        scanf("%d",&n);
        memset(a,0,sizeof(a)); // 注意初始化;
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= n; ++j) {
                scanf("%d",&a[i][j]);
            }
        }
        int ans = INF;
        for (int i = 0; i < 1<<n; ++i) { // 枚举第一行的情况
                ans = min(ans,solve(n,i));
        }
        if(ans == INF) ans = -1;
        printf("Case %d: %d\n",cas,ans);
    }
    return 0;
}

 

AI智能体丨使用Coze一键生成中式养生视频,39 条作品涨粉 37.9 万!(附保姆级教程) 本文介绍如何利用扣子(Coze)AI智能体工作流高效制作中式养生短视频。该方案通过AI自动生成养生文案、古风插画素材、语音合成和视频剪辑,将传统制作流程从2-3小时缩短至1-2分钟。工作流包含文案创作、音频生成、图片素材制作和视频合成四大模块,采用大模型处理各环节内容,最终输出可直接导入剪映的草稿文件。特别适合希望快速批量制作文化氛围感强、兼具干货与视觉效果的养生内容创作者,效率提升近百倍。 阅读详情

相关推荐

从零搭建:基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台

本文详细介绍了如何从零搭建基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台。通过环境准备、模型部署、接口配置及联合仿真等步骤,帮助用户快速掌握飞行器仿真的核心技术,实现高效的三维可视化与实时数据交互。

weixin_29100399的博客 517

uva 11464 - Even Parity (枚举+递推)

题目链接:11464 - Even Parity 题意:

To be what you what to be! 920

从隐私保护到生命守护:CPD技术中的传感器选择与权衡

本文探讨了智能座舱中儿童存在检测(CPD)技术的传感器选择与隐私保护平衡策略。通过分析毫米波雷达、UWB等先进技术的性能与隐私风险,揭示了如何在确保儿童安全的同时保护用户隐私。文章还展望了CPD技术与座舱生态系统的未来融合趋势,为汽车安全领域提供了重要参考。

weixin_29159441的博客 301

UVA 11464 Even Parity(枚举递推)

11464 - Even Parity Time limit: 3.000 seconds We have a grid of size N x N. Each cell of the grid initially contains a zero(0) or a one(1).  The parity of a cell is the number of 1s surrounding

LYHVOYAGE的专栏 1260

【学习笔记】人群归因分数 PAF 以及combined PAF

人群归因风险比例(Population Attributable Fraction,PAF)是一个流行病学指标,它估计了在总体中,如果能消除一个特定的危险因素,能预防多少百分比的疾病或健康结果。简单来说,PAF回答的是:“如果没有这个风险因素,总体中会有多少病例是可以避免的?

weixin_53499537的博客 4901

2024全国村级行政边界数据

五级行政区划:村边界数据产品涵盖五级行政区划:(一级行政区)省级行政区共31个其中:(台湾、香港、澳门除外);(二级行政区)地级行政区共334个其中:7个地区、3个盟、30个自治州、294个地级市;(三级行政区)县级行政区共2851个其中:1355个县、117个自治县、49个旗、3个自治旗、363个县级市、962个市辖区、1个林区、1个特区;(四级行政区)乡级行政区共40497个其中:11626个乡、1034个民族乡、20117个镇、7566个街道、151个苏木、1个民族苏木、2个县辖区公所;

J_Giser的博客 3232

例题1.7 偶数矩阵 Even Parity UVA - 11464 部分枚举+递推

传送门 题目大意:给你一个n*n的01矩阵,你的任务时把尽量少的0变成1,使得每个数字的上下左右之和为偶数。只算存在的 解题思路:全部枚举时不可能的,枚举第一行的变化,那么第二行行就可以递推出来。(因为第一行上面一行不存在,所以是三个的和)。  那么第三行就可以根据第一行和第二行推出。 AC代码: #include #include #include #include #i

sky的博客 535

【AI智能体】Codex 基于Git 实现项目管理实战操作详解

Codex 基于Git 实现项目管理实战操作详解

congge 5459

UVA - 11464 Even Parity 枚举+递推

原题地址: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=24665 代码: #include "stdio.h" #include "string.h" #include "iostream" using namespace std; int a[17][17],ans,inf=1000000,n,b[

西柚酱的学习blog 517

Python爬虫实战:百度贴吧帖子与评论抓取全攻略(附舆情分析技巧)

基础配置# 要爬取的贴吧名称(替换成自己需要的,比如“XX手游吧”)TIEBA_NAME = "XX手游"# 分页参数(每页50条帖子,可根据需求调整)PAGE_NUM = 3 # 爬取前3页帖子,共150条# 请求头(从浏览器复制自己的,更真实)Win64;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2388

CS之攻击菜单详解-后门生成与上线

能够生成如HTA文档、office宏、payload生成器、exe程序。 windows可执行程序exe 可以看到能生成两种windows可执行程序,其分别代表stage分阶段和unstage(stageless)不分阶段。传送门 ——>Cobalt Strike中payload的stage与unstage区别 选择监听器后,按需生成不同类型的exe 然后在目标机器运行即可上线 payload生成器 选择生成如下类型的后门 ——>https://che...

渗透之路,攻防之间皆学问 6808

uva - 11464 - Even Parity(部分枚举,递推)

题意:给你一个nxn的矩阵01矩阵,(每个元素非0就1),你的任务是把尽量少的0变成1,使矩阵的每个元素的上下左右的元素只和均为偶数。 方法:枚举每个数字变或者不变有2^255太大。但是枚举第一行只有2^15,然后根据第一行计算下边的就行。注意是从上到下,从左到右计算,也就是得到的肯定是满足题意的。如果出现矛盾,则这种枚举不合适,返回INF。 #include #include #

追随大神的脚步~ 852

优化点列图(RMS半径)的操作数

优化点列图(RMS半径)的操作数

weixin_72050316的博客 2259

UVA 11464 Even Parity(部分枚举 递推)

Even Parity We have a grid of sizeNxN. Each cell of the grid initially contains a zero(0) or a one(1).Theparityof a cell is the number of 1s surrounding that cell. A cell is surrounded by at mo...

weixin_30709809的博客 85

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

uva 11464 Even Parity(逐层递推)

uva 11464 Even Parity We have a grid of size N x N. Each cell of the grid initially contains a zero(0) or a one(1). The parity of a cell is the number of 1s surrounding that cell. A cell is su

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 906

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Even Parity UVA - 11464 偶数矩阵 枚举

题目链接 We have a grid of size N N. Each cell of the grid initially contains a zero(0) or a one(1). The parityof a cell is the number of 1s surrounding that cell. A cell is surrounded by at most 4 ce...

Nicolas的博客 527

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

UVA 11464 - Even Parity

该题也是一个需要观察和等价转换思维的题目。  如果直接暴力,时间复杂度难以承受,但是其实我们可以发现,只需要枚举第一行就可以了,只要第一行确定了,那么最终的偶数矩阵也就确定了,可以利用偶数限制关系轻松推出其他的格子,在这个过程中判断是否符合规则即可。 细节参见代码: #include using namespace std; typedef long long ll; const int IN

AC_Arthur的专栏 770

(uva 11464)偶数矩阵(Even Parity)

学位运算的时候以为用不上看了几眼直接就跳过了……结果这次吃亏了……在老师的指导下第一次学会了位运算,留念~具体见代码注释~ 11464 - Even Parity Time limit: 3.000 seconds D Even Parity Input: Standard Input Output: Standard Output

勤奋赢得实力,实力赢得尊严! 697

UVa 11464 Even Parity

We have a grid of size N x N. Each cell of the grid initially contains a zero(0) or a one(1).  The parity of a cell is the number of 1s surrounding that cell. A cell is surrounded by at most 4 cells

BacktoWin 601

寒假刷题4:Even Parity (UVa 11464)

题目链接: Even Parity 题目解析: 很容易想到枚举每个 0 变或不变,最后判断是否满足条件。共计2255种情况,显然会超时。 注意到如果上一行确定,完全可以推出下一行。故我们仅需确定第一行,就可以推出整个矩阵。 而第一行仅有215=32768种情况,可行。总复杂度为O(2n * n2) AC(大概吧…UVA进不去)代码: #include<iostream> #inclu...

int_lyy的博客 1378

Uva 11464 - Even Parity(偶素矩阵)

题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2459 题目大意: 有一个N×N的矩阵,矩阵中的元素只有1或0,如果说对于一个矩阵,它的所有的点的上下左右的点的和是偶数,则称这个矩阵为偶数矩阵,现在给你一个任意的矩阵,要求的是如果

棺材深處 1321

状态压缩+枚举 UVA 11464 Even Parity

题目传送门 1 /* 2 题意:求最少改变多少个0成1,使得每一个元素四周的和为偶数 3   状态压缩+枚举:枚举第一行的所有可能(1<<n),下一行完全能够由上一行递推出来,b数组保存该位置需要填什么 4         最后检查不同的数量,取最小值 5 */ 6 #include <cstdio> 7 #inclu...

weixin_34319111的博客 80

Even Parity UVA - 11464

实现起来很简单,主要在于思路:对第一行的状态进行枚举,然后按照得到的第一行的状态,依次计算第二行的状态,然后按照第二行的状态计算第三行的状态即可,状态的计算很简单,假设当前的行为第i行第j列,那么为了让第i-1行第j列满足题目中的条件,那么要保证data[i-2][j]+data[i-1][j-1]+data[i-1][j+1]+data[i][j]的和为偶数,那么就可以按照前面三项的值计算出最后

zju2016的博客 423
上一篇: UVA - 11300 Spreading the Wealth 【代数求解+中位数的点距离其他点距离之和最短】
下一篇: FZU 2214 Knapsack problem 【01背包】
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值