Codeforces Round 928 (Div. 4) F. Vlad and Avoiding X

Vlad and Avoiding X

题目描述

弗拉迪斯拉夫有一个大小为 7 × 7 7 \times 7 7×7 的网格,其中每个单元格的颜色都是黑色或白色。在一次操作中,他可以选择任意一个单元格并改变其颜色(黑色 ↔ \leftrightarrow 白色)。

请找出最少需要多少次运算才能确保没有黑色单元格的对角线上的四个相邻单元格也是黑色的。

左图显示,最初有两个黑色单元格违反了条件。只要翻转一个单元格,网格就能正常工作。

输入描述

第一行输入包含一个整数 t t t ( 1 ≤ t ≤ 200 1 \leq t \leq 200 1t200 ) - 测试用例的数量。然后是测试用例的描述。

每个测试用例由 7 7 7 行组成,每行包含 7 7 7 个字符。每个字符都是 W \texttt{W} W B \texttt{B} B ,分别表示白色或黑色单元格。

输出描述

对于每个测试用例,输出一个整数 - 为确保没有黑色单元格且所有四个对角线相邻单元格也是黑色所需的最少操作数。

样例输入

4
WWWWWWW
WWWWBBB
WWWWWBW
WWBBBBB
WWWBWWW
WWBBBWW
WWWWWWW
WWWWWWW
WWWWWWW
WBBBBBW
WBBBBBW
WBBBBBW
WWWWWWW
WWWWWWW
WWWWWWW
WWWWWWW
WWWWWWW
WWWWWWW
WWWWWWW
WWWWWWW
WWWWWWW
WBBBBBW
BBBBBBB
BBBBBBB
WWWWWWW
BBBBBBB
BBBBBBB
BBBBBBB

样例输出

1
2
0
5

原题

CF——传送门

代码

#include <bits/stdc++.h>
using namespace std;
#define max_Heap(x) priority_queue<x, vector<x>, less<x>>
#define min_Heap(x) priority_queue<x, vector<x>, greater<x>>
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<long long, long long> PLL;
const double PI = acos(-1);

char g[7][7];

struct node
{
    int x, y;
};

bool check(int valid_num) // 检查该种翻转方案是否可行
{
    for (int i = 1; i < 6; i++)
    {
        for (int j = 1; j < 6; j++)
        {
            if (valid_num != ((i + j) % 2)) // 不属于该板块的点就跳过
                continue;
            if (g[i][j] && g[i - 1][j - 1] && g[i - 1][j + 1] && g[i + 1][j - 1] && g[i + 1][j + 1]) // 一旦发现x图形,返回0,该方案不可行
                return 0;
        }
    }
    return 1;
}

bool dfs(vector<node> &v, int cnt_left, int idx, int valid_num) // v为对应板块的'B'所在的点的数组,cnt_left为剩下需要翻转的次数,idx为数组的索引,valid_num表示奇数板块还是偶数板块
{
    if (cnt_left == 0)
        return check(valid_num); // 翻转次数用完后,检查是否可行
    if (idx == v.size())         // idx遍历完数组仍未找到可行方案,返回0
        return 0;
    bool ok = 0;
    ok |= dfs(v, cnt_left, idx + 1, valid_num);     // 该点不翻转,递归下一个点
    g[v[idx].x][v[idx].y] ^= 1;                     // 翻转
    ok |= dfs(v, cnt_left - 1, idx + 1, valid_num); // 该点翻转,递归下一个点
    g[v[idx].x][v[idx].y] ^= 1;                     // 回溯
    return ok;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int t;
    cin >> t;
    while (t--)
    {
        for (int i = 0; i < 7; i++)
        {
            for (int j = 0; j < 7; j++)
            {
                char c;
                cin >> c;
                g[i][j] = (c == 'B'); // 将'B'用1存储,便于操作,相对应的,0表示'W'
            }
        }
        // 将7X7的板块分为两个互不影响的板块
        vector<node> a, b;
        for (int i = 0; i < 7; i++)
        {
            for (int j = 0; j < 7; j++)
            {
                if (g[i][j])
                {
                    if ((i + j) % 2 == 0)
                    {
                        a.push_back({i, j}); // 加入偶数板块
                    }
                    else
                    {
                        b.push_back({i, j}); // 加入奇数板块
                    }
                }
            }
        }
        int ans = 0;
        // 最多只要翻转4个点即可令其不存在x图形
        for (int i = 0; i <= 4; i++)
        {
            if (dfs(a, i, 0, 0))
            {
                ans += i;
                break;
            }
        }
        for (int i = 0; i <= 4; i++)
        {
            if (dfs(b, i, 0, 1))
            {
                ans += i;
                break;
            }
        }
        cout << ans << '\n';
    }

    return 0;
}

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

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

相关文章

39.WEB渗透测试-信息收集-域名、指纹收集(1)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;38.WEB渗透测试-信息收集-信息收集-企业信息收集&#xff08;5&#xff09; 子域名信息收…

公文写作笔记

标题 最后一行的日期&#xff0c;后边占4个格子。两个数字占一格。落款单位在日期的正上方。 格式积累 内容&#xff1a; ①开头&#xff1a;缘由 ②主题&#xff1a;对策&#xff08;别人做得好&#xff0c;就借鉴&#xff09; ③结尾&#xff1a;简单的总结&#xff08;字…

LeetCode - 611.有效三角形个数

题目链接 LeetCode - 611. 有效三角形的个数 动画解释 代码解释 class Solution { public:int triangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int cout 0;int fix nums.size()-1;while(fix>1){int left 0;int right fix-1;while(left &l…

rust将json字符串直接转为map对象或者hashmap对象

有些时候我们还真的不清楚返回的json数据里面到底有哪些数据&#xff0c;数据类型是什么等&#xff0c;这个时候就可以使用批处理的方式将json字符串转为一个对象&#xff0c;然后通过这个对象的get方法来获取json里面的数据。 pub async fn test_json(&self) {let json_st…

通过AI助手实现一个nas定时任务更新阿里云域名解析

一.通过AI助手实现一个ip-domain.py的脚本 起一个Python脚本&#xff0c;ip-domain.py&#xff1b;注意已安装Python3.的运行环境&#xff1b;将下面阿里云相关配置添加&#xff0c;注意这里引用了两个包&#xff0c;requests和alibabacloud_alidns20150109&#xff1b;执行前…

如何设计一套轻量级的批处理技术?

对于任何应用程序而言&#xff0c;可以说批处理都是一种基础设施类的技术组件。批处理技术应用非常广泛&#xff0c;数据报表、统计分析、定时任务等场景实际上都可以应用批处理技术。如何在不需要人工参与的情况下进行离线、自动、高效地进行复杂数据分析是批处理程序需要考虑…

如何消除SmartScreen“未知发布者”警告?

在互联网高速发展、应用程序遍地开花的当今时代&#xff0c;作为企业&#xff0c;我们通常会开发自己的应用程序来开展自己的业务&#xff0c;以便与客户建立更深入的联系。不少应用程序所有者可能会面临一个难题&#xff0c;那就是用户下载时&#xff0c;系统会弹出SmartScree…

可以在手机端运行的大模型标杆:微软发布第三代Phi-3系列模型,评测结果超过同等参数规模水平,包含三个版本,最小38亿,最高140亿参数

本文原文来自DataLearnerAI官方网站&#xff1a; 可以在手机端运行的大模型标杆&#xff1a;微软发布第三代Phi-3系列模型&#xff0c;评测结果超过同等参数规模水平&#xff0c;包含三个版本&#xff0c;最小38亿&#xff0c;最高140亿参数 | 数据学习者官方网站(Datalearner…

Docker-harbor——私有仓库部署与管理

目录 一、搭建本地私有仓库 1.下载Registry镜像 2.添加本地私有仓库配置 3.重启服务并运行Registry容器 4.容器的操作 4.1拉取Nginx镜像并为镜像打标签 4.2上传到私有仓库 4.3列出私有仓库所有镜像 4.4列出私有仓库的镜像的所有标签 5.先删除原有镜像再拉取私有仓库镜…

Python 全栈体系【四阶】(三十七)

第五章 深度学习 八、目标检测 3. 目标检测模型 3.1 R-CNN 系列 3.1.1 R-CNN 3.1.1.1 定义 R-CNN(全称 Regions with CNN features) &#xff0c;是 R-CNN 系列的第一代算法&#xff0c;其实没有过多的使用“深度学习”思想&#xff0c;而是将“深度学习”和传统的“计算…

华为配置mDNS网关示例(AP与AC间二层转发)

华为配置mDNS网关示例&#xff08;AP与AC间二层转发&#xff09; 组网图形 图1 配置mDNS网关组网图 组网需求配置思路操作步骤配置文件 组网需求 如图1所示&#xff0c;某企业的移动终端通过WLAN连接网络&#xff0c;AP_1和AP_2分别与AC之间采用二层转发。部门1和部门2分别属…

RakSmart站群服务器租用注意事项科普

随着互联网的飞速发展&#xff0c;站群运营成为越来越多企业和个人的选择。而RakSmart作为知名的服务器提供商&#xff0c;其站群服务器租用服务备受关注。在租用RakSmart站群服务器时&#xff0c;源库建议有一些关键的注意事项需要特别留意&#xff0c;以确保服务器的稳定运行…

SpringBoot学习之SpringBoot3集成OpenApi(三十八)

Springboot升级到Springboot3以后,就彻底放弃了对之前swagger的支持,转而重新支持最新的OpenApi,今天我们通过一个实例初步看看OpenApi和Swagger之间的区别. 一、POM依赖 我的POM文件如下,仅作参考: <?xml version="1.0" encoding="UTF-8"?>…

鼓吹开源无前途,Meta却开源了Llama 3模型,无需注册在线即可使用

Meta AI一直是人工智能领域开源领域的领导者&#xff0c;一边是OpenAI鼓吹闭源才是人工智能大模型的未来&#xff0c;但是Meta AI却开源了自己的Llama 3大模型&#xff0c;且Llama 3开源模型支持80亿与700亿参数&#xff0c;而未来更大的4000亿参数大模型还在继续训练中。其Lla…

webpack3升级webpack4遇到的各种问题汇总

webpack3升级webpack4遇到的各种问题汇总 问题1 var outputNamecompilation.mainTemplate.applyPluginWaterfull(asset-path,outputOptions.filename,{......)TypeError: compilation.mainTemplate.applyPluginsWaterfall is not a function解决方法 html-webpack-plugin 版…

机器学习实战-聚类算法

聚类算法是一种无监督学习的算法&#xff0c;用于将数据集中的数据分成不同的聚类或组。聚类算法是数据挖掘和机器学习领域中常见的技术之一&#xff0c;具有广泛的应用。 以下是聚类算法的一些知识点&#xff1a; 聚类算法的目的是将数据集划分为不同的组&#xff0c;使得组内…

【酱浦菌-爬虫项目】爬取百度文库文档

1. 首先&#xff0c;定义了一个变量url&#xff0c;指向百度文库的搜索接口 ‘https://wenku.baidu.com/gsearch/rec/pcviewdocrec’。 2. 然后&#xff0c;设置了请求参数data&#xff0c;包括文档ID&#xff08;docId&#xff09;和查询关键词&#xff08;query&#xff09;。…

【蓝桥杯C++A组省三 | 一场勇敢的征途与致19岁的信】

随着4.13西大四楼考场的倒计时结束… 就这样蓝桥杯落幕了 省三的名次既满足又不甘心&#xff0c;但又确乎说得上是19岁途中的又一枚勋章 从去年得知&#xff0c;纠结是否要报名、到寒假开始战战兢兢地准备、陆续开始创作博客&#xff0c;记录好题和成长……感谢你们的关注&…

Flask表单详解

Flask表单详解 概述跨站请求伪造保护表单类把表单渲染成HTML在视图函数中处理表单重定向和用户会话Flash消息 概述 尽管 Flask 的请求对象提供的信息足够用于处理 Web 表单&#xff0c;但有些任务很单调&#xff0c;而且要重复操作。比如&#xff0c;生成表单的 HTML 代码和验…

偏自相关系数的等价定义

第k个回归系数的值 原始定义