一. 原题链接 https://codeforces.com/contest/1494/problem/B

 

二. 题意 + 题解:

没看懂题目, 懵了好久,

先狡辩一下当时误解的句子, 英语是硬伤了, 呜呜

exactly U cells in the top row are black; //意为 : 最上行恰好有U个黑块

Note that you can color zero cells black and leave every cell white. // 意为 : 你可以一个方格也不涂黑色, 并且可以都涂白色

所以 U,R,D,L分别代表 最上行, 最右列, 最下行, 最左列的要求的黑块数目, 我们要做的就是该咋涂色, 使这2行2列满足.

需要注意的是: 四个角里的颜色连着一行一列, 需分开讨论: 

枚举每个角的黑色格子数(0或1),

如果这一行(或列) 两角中黑格数目 <= 目标 && 可以涂黑色的数目 >= 目标,

上下左右四趟都满足则输出YES, 那如何满足呢?

1. 这一行(或列) 两角中黑格数目 <= 目标 :  若为行 则需 最左格+最右格黑格数目 <= 目标;

                  若为列  则需最上格加最下格黑格数目 <= 目标

2.  可以涂黑色的数目 >= 目标 :  该行(或列)的格子数 - 2 + 两角中黑格数目;

             其中该行(或列)的格子数n - 2 意为这一行(或列)不受其它列(或行)的干扰的格子数目

只需将不符合条件的都踢出去就好了, 来个continue

三. AC代码

#include <iostream>

using namespace std;

int main()
{
int t, n, u, r, l, d;
cin >> t;
while(t --)
{
bool ok = 0;
cin >> n >> u >> r >> d >> l;
//核心代码, 看着麻烦, 其实都是类似的代码
for(int ul = 0; ul < 2; ul ++)//ul, ur, dl, dr分别为四个角的黑块数
for(int ur = 0; ur < 2; ur ++)
for(int dr = 0; dr < 2;dr ++)
for(int dl = 0; dl < 2; dl ++)
{
if(dr + ur > r || n - 2 + dr + ur < r)//如果这一行两角中黑格数目 <= 目标 && 可以涂黑色的数目 >= 目标
continue;
if(ul + dl > l || n - 2 + ul + dl < l)
continue;
if(ul + ur > u || n - 2 + ul + ur < u)
continue;
if(dl + dr > d || n - 2 + dl + dr < d)
continue;
ok = true;
break;
}
puts(ok? "YES" : "NO");
}
return 0;
}

 

四.

附原题:

B. Berland Crossword
 

Berland crossword is a puzzle that is solved on a square grid with nn rows and nn columns. Initially all the cells are white.

To solve the puzzle one has to color some cells on the border of the grid black in such a way that:

  • exactly U cells in the top row are black;
  • exactly R cells in the rightmost column are black;
  • exactly D cells in the bottom row are black;
  • exactly L cells in the leftmost column are black.

Note that you can color zero cells black and leave every cell white.

Your task is to check if there exists a solution to the given puzzle.

Input

The first line contains a single integer tt (1≤t≤100; 1≤t≤1000) — the number of testcases.

Then the descriptions of tt testcases follow.

The only line of each testcase contains 55 integers n,U,R,D,L (2≤n≤100; 2≤n≤100; 0≤U,R,D,L≤n).

Output

For each testcase print "YES" if the solution exists and "NO" otherwise.

You may print every letter in any case you want (so, for example, the strings yEs, yes, Yes and YES are all recognized as positive answer).

Example
input
4
5 2 5 3 1
3 0 0 0 0
4 4 1 4 0
2 1 1 1 1
output
YES
YES
NO
YES
Note

Here are possible solutions to testcases 11, 22 and 44:

Edu Cf Round 105 (Div. 2) B. Berland Crossword 1.读懂题, 2. 思维的更多相关文章

  1. CF Round #551 (Div. 2) D

    CF Round #551 (Div. 2) D 链接 https://codeforces.com/contest/1153/problem/D 思路 不考虑赋值和贪心,考虑排名. 设\(dp_i\ ...

  2. CF Round #510 (Div. 2)

    前言:没想到那么快就打了第二场,题目难度比CF Round #509 (Div. 2)这场要难些,不过我依旧菜,这场更是被\(D\)题卡了,最后\(C\)题都来不及敲了..最后才\(A\)了\(3\) ...

  3. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

  4. 构造 Codeforces Round #Pi (Div. 2) B. Berland National Library

    题目传送门 /* 题意:给出一系列读者出行的记录,+表示一个读者进入,-表示一个读者离开,可能之前已经有读者在图书馆 构造:now记录当前图书馆人数,sz记录最小的容量,in数组标记进去的读者,分情况 ...

  5. 水题 Codeforces Round #105 (Div. 2) B. Escape

    题目传送门 /* 水题:这题唯一要注意的是要用double,princess可能在一个小时之内被dragon赶上 */ #include <cstdio> #include <alg ...

  6. CF Round #600 (Div 2) 解题报告(A~E)

    CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...

  7. cf Round#273 Div.2

    题目链接,点击一下 Round#273 Div.2 ================== problem A Initial Bet ================== 很简单,打了两三场的cf第一 ...

  8. CF Round #509 (Div. 2)

    前言:第一次打\(CF\),因为经验不足以及英语水平很烂,即便在机房大佬的带领下也是花了好久才读懂题目..\(A\)题直到\(11\)分钟才\(A\),题目一共才做了\(4\)题,太菜了.. A. H ...

  9. Codeforces Round #368 (Div. 2) A. Brain's Photos (水题)

    Brain's Photos 题目链接: http://codeforces.com/contest/707/problem/A Description Small, but very brave, ...

随机推荐

  1. Java基础—构造方法

    1.构造方法概述 构造方法是一种特殊的方法,用来创建对象,当我们不定义时,系统会默认给出一个无参构造方法:一旦我们定义了任意的构造方法,系统就不会给出默认的无参构造方法 格式如下: public ca ...

  2. STL基本用法的一些记录

    迭代器 (set类型)::iterator 就是迭代器 迭代器可以看成stl容器内元素的指针 set 默认从小到大排序 begin() set中最小的元素的迭代器 end() set中最大的元素的迭代 ...

  3. 深度优先算法--对DFS的一些小小的总结(一)

    提到DFS,我们首先想到的是对树的DFS,例如下面的例子:求二叉树的深度 int TreeDepth(BinaryTreeNode* root){ if(root==nullptr)return 0; ...

  4. HTTP1.0和HTTP1.1和HTTP2.0的区别

    1 HTTP1.0和HTTP1.1的区别1.1 长连接(Persistent Connection)       HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求 ...

  5. 解决IDEA的maven项目 添加依赖后Reimport无反应

    解决IDEA的maven项目 添加依赖后Reimport无反应   如果重启项目和编译器都不管用的话, 找到项目在硬盘上的位置  把该项目的.idea文件夹和xxx.iml文件删除    打开IDEA ...

  6. Spring由哪些模块组成?

    以下是Spring 框架的基本模块: Core module Bean module Context module Expression Language module JDBC module ORM ...

  7. spring源码-扩展点

    /** * @Author quan * @Date 2020/11/13 * 扩展原理 * BeanPostProcessor bean后置处理器,bean创建对象初始化前后进行拦截工作 * * * ...

  8. 03-三高-并行并发&服务集群

          三高项目 服务并行&并发 并行和并发 服务的搭建中,并行 并发.----并发. 集群 同质的(同样的配置,运行同样的程序,对外提供同样的服务). 修改同样的存储,可以认. (小建议 ...

  9. Living Documentation

    Living Documentation Living documentation in legacy systems Living documentation, which comes from t ...

  10. 记离线缓存(manifest)一大坑,断定其只适用于静态网站或离线应用

    今天看了离线缓存(manifest)方面的资料,兴冲冲地就想给自己的网站用上.待我把代码都写好部署上服务器,并测试过OK的时候,在SegmentFault刷了一把manifest方面的问答,才发现这个 ...