方格涂色(冬季每日一题 30)

news2024/11/26 8:25:58

给定一个 n × n n×n n×n 的方格矩阵,最初所有方格都是白色的。

现在需要将矩阵边界上的一些方格涂成黑色,从而使得:

  • 最上一行恰好有 U U U 个方格是黑色的。
  • 最右一列恰好有 R R R 个方格是黑色的。
  • 最下一行恰好有 D D D 个方格是黑色的。
  • 最左一列恰好有 L L L 个方格是黑色的。

注意,你可以选择不进行任何涂色,让所有方格都保持白色。

请问,是否存在满足所有要求的合理涂色方案。

输入格式
第一行包含整数 T T T,表示共有 T T T 组测试数据。

每组数据占一行,包含 5 5 5 个整数 n , U , R , D , L n,U,R,D,L n,U,R,D,L

输出格式
每组数据输出一行结果,如果存在合理方案,则输出 YES,否则输出 NO

数据范围
1 ≤ t ≤ 1000 , 1≤t≤1000, 1t1000,
2 ≤ n ≤ 100 , 2≤n≤100, 2n100,
0 ≤ U , R , D , L ≤ n 0≤U,R,D,L≤n 0U,R,D,Ln

输入样例:

4
5 2 5 3 1
3 0 0 0 0
4 4 1 4 0
2 1 1 1 1

输出样例:

YES
YES
NO
YES

样例解释
下面是样例 1 , 2 , 4 1,2,4 1,2,4 的可行方案:

在这里插入图片描述


#include<iostream>

using namespace std;

int n;
int u, r, d, l;
// 2 5 3 1
bool check(int state){
    
    int a = state >> 0 & 1, b = state >> 1 & 1;
    int x = state >> 2 & 1, y = state >> 3 & 1;
    
    if(!(u >= a + b && u <= n - 2 + a + b)) return false;
    if(!(r >= b + x && r <= n - 2 + b + x)) return false;
    if(!(d >= x + y && d <= n - 2 + x + y)) return false;
    if(!(l >= y + a && l <= n - 2 + y + a)) return false;
    
    return true;
}

int main(){
    
    int t;
    
    cin >> t;
    while(t--){
        
        cin >> n >> u >> r >> d >> l;
        
        bool flag = false;
        for(int i = 0; i < 16; i++){
            if(check(i)){
                flag = true;
                break;
            }
        }
        if(flag) puts("YES");
        else puts("NO");
    }
    
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android入门第47天-Fragment的基本使用

简介 我们的Android入门一步步已经进入中级。我们讲完了所有的基本组件的基本使用、Activity、Service、BroadCast。今天我们来到了Fragment篇章。Fragment和Activity比到底是一个什么样的存在呢&#xff1f;我们以一个很小的例子来说通Fragment。 Fragment是什么 Fragment可…

智能家居DIY系列之智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时&#xff0c;它们可以通过声控、触控、红外等方式进行控制&#xff0c;或者带有调光开关&#xff0c;让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块&#xff0c;可与手机、家庭智能助手、或其他智能…

浅析JWT Attack

前言 在2022祥云杯时遇到有关JWT的题&#xff0c;当时没有思路&#xff0c;对JWT进行学习后来对此进行简单总结&#xff0c;希望能对正在学习JWT的师傅们有所帮助。 JWT JWT&#xff0c;即JSON WEB TOKEN&#xff0c;它是一种用于通信双方之间传递安全信息的简洁的、URL安全…

创新研发负载分担机制,天翼云IPv6网络带宽再升级!

网络作为社会信息化的基础&#xff0c;已成为人们日常生活不可或缺的一部分。网络通过模拟信号将信息转为电流进行传播&#xff0c;在这个过程中&#xff0c;网卡便充当了解码器的作用&#xff0c;能够将电信号转换为计算机能够识别的数字信号。 网卡&#xff0c;即网络接口卡&…

关于LabVIEW大作业/课设/论文的写作框架整理(主体三部曲)

文章目录 一、前言二、写作框架2.1 介绍函数以及工具箱2.2 介绍相关原理2.3 系统设计和案例演示三、总结一、前言 因为在Labview临近要交大作业,发现自己根本不会写,程序等的已经准备好了,但是对于写作一直不知道查了查知网文章,让我有了个大概了解,在此帖出来,希望能帮…

1569_AURIX_TC275_电源管理与系统控制单元

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 之前看了不少类似的寄存器信息&#xff0c;总体来说阅读价值不是很大&#xff0c;查询的价值多一些。如果是进行编码&#xff0c;这样的寄存器信息需要查一下&#xff0c;在功能了解的时候…

java面试强基(22)

为什么要使用多线程呢? 先从总体上来说&#xff1a; 从计算机底层来说&#xff1a; 线程可以比作是轻量级的进程&#xff0c;是程序执行的最小单位,线程间的切换和调度的成本远远小于进程。另外&#xff0c;多核 CPU 时代意味着多个线程可以同时运行&#xff0c;这减少了线程…

漏洞丨实例分析cve2012-0158

作者&#xff1a;黑蛋 作者&#xff1a;黑蛋 一、漏洞简介 CVE-2012-0158是一个office栈溢出漏洞&#xff0c;Microsoft Office 2003 sp3是2007年9月18日由微软公司创作的一个办公软件&#xff0c;他的MSCOMCTL.ocx中的MSCOMCTL.ListView控件检查失误&#xff0c;由于读取长…

MySQL数据库Linux系统安装tar包

MySQL数据库Linux系统安装tar包 使用的远程工具是mabaxterm,使用此工具连接linux服务器&#xff0c; 第一步先把mysql安装包拖到远程工具的目录里&#xff1a;/usr/local 第二步&#xff1a;cd到local目录下解压数据库mysql 命令&#xff1a; cd …/usr/local 解压数据库masq…

endo BCN-PEG4-COOH,1881221-47-1,endo BCN-四聚乙二醇-羧酸特点分享

●外观以及性质&#xff1a; endo BCN-PEG4-acid含有BCN基团和羧酸基团&#xff0c;酸基团可以在偶联条件下与胺反应形成酰胺键。BCN基团可以发生点击化学反应。 【产品理化指标】&#xff1a; ●中文名&#xff1a;endo BCN-四聚乙二醇-羧酸 ●英文名&#xff1a;endo BCN-P…

APS智能排产帮助LNG船舶生产厂家充分利用产能,提升生产效益

前一段时间&#xff0c;由于欧洲各国集中储备天然气准备过冬&#xff0c;引发全球对LNG船舶&#xff0c;也就是液化天然气运输船的需求持续增加。一艘LNG船单日租金成本已跃升至近40万美元&#xff08;约合人民币283万元&#xff09;&#xff0c;同比增长340%以上&#xff0c;一…

测试面试 | 某 BAT 大厂测试开发面试真题与重点解析

image1080677 64.8 KB 本文作者 J2W 为霍格沃兹测试学院《测试开发实战进阶》班优秀学员&#xff0c;4 个多月从初出茅庐、勉勉强强的初级测试开发快速成长&#xff0c;成功拿下某 BAT 大厂中级测试开发岗位 Offer&#xff0c;并获得学院奖学金。助教老师对其一致评价是「学习非…

程序人生:自学上岸自动化测试薪资20K,我的经验值得想进阶的朋友借鉴...

经常有人问过这样一个问题&#xff1a;‘’自动化测试是真的这么厉害吗&#xff1f;如何从零成为自动化测试工程师&#xff1f;” 我之前写过这样一篇文章【从功能测试进阶自动化测试&#xff0c;熬夜7天整理出这一份超全学习指南【附网盘资源】】 厉害不厉害在于你有没有扎实…

java-爬虫-es

文章目录1.数据来源&#xff1a;数据库、mq、爬虫2.爬虫&#xff1a;获取想要的页面数据1.导入依赖2.爬取核心部分编码3.测试解析成功4.封装对象5.引入es配置类6.将HtmlParseUtil注册到spring7.爬取的数据入es库8.空白文件初始化vue文献&#xff1a;https://www.kuangstudy.com…

Java程序员的技术进阶成长路线

据不完全统计&#xff0c;截至目前(2017.07)为止&#xff0c;中国Java程序员的数量已经超过了100万。而且&#xff0c;随着IT培训业的持续发展和大量的应届毕业生进入社会&#xff0c;Java程序员面临的竞争压力越来越大。那么&#xff0c;作为一名Java初级程序员&#xff0c;怎…

【财务】FMS财务管理系统:礼品卡管理

本文总结了FMS财务管理系统中的礼品卡管理&#xff0c;以及如何根据不同类型卡的流程和管理&#xff0c;进行相应的账务处理。 目前在各大电子商务网站或APP购买商品时&#xff0c;在支付时有很多网站都可以使用礼品卡&#xff0c;对于礼品卡的管理也是公司及财务部重点关注的&…

[附源码]Nodejs计算机毕业设计基于WEB的心理测评系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Django期末考试复习

目录一、Django复习内容二、建立一个项目1.进入环境2.建立项目3.打开文件三、建立APP1.进入View文件2.进入Django环境3.建立App四、注册超级用户1.INSTALLED_APPS配置2.建立模型3.数据库的迁移4.进入环境注册超级用户5.开启服务器五、配置数据库一、Django复习内容 二、建立一个…

【云原生进阶之容器】第一章Docker核心技术1.4节——chroot技术

1. 背景 1.1 什么是 chroot chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。 1.2 为何使用 chroot 在经过 chroot 之后,…

git merge 命令详解

1. 前言 2. 合并场景之 Fast-forward&#xff08;快速合并&#xff09; 3. 合并场景之 three way merge&#xff08;三路合并之正常合并&#xff09; 4. 合并场景之 three way merge&#xff08;三路合并之冲突合并&#xff09; 5. 中止合并 1. 前言 将指定分支合并到当前分支…