Content

有一种叫做 Berland crossword 的拼图游戏。这个拼图由 \(n\) 行 \(n\) 列组成,你可以将里面的一些格子涂成黑色。现在给出 \(T\) 个这样的拼图,每个拼图都含有如下限制:

  • 第一行最多有 \(u\) 个黑色格子。
  • 第 \(n\) 列最多有 \(r\) 个黑色格子。
  • 第 \(n\) 行最多有 \(d\) 个黑色格子。
  • 第一列做多有 \(l\) 个黑色格子。

问是否有满足如上限制的拼图(不需要输出方案)。

数据范围:\(2\leqslant n\leqslant 100\),\(0\leqslant u,r,d,l\leqslant n\),\(1\leqslant T\leqslant 10^3\)。

Solution

第二题还是一样的暴力,只不过可能和其他那些直接暴力枚举 \(16\) 种情况的不太一样,这里讲讲。

首先,我们可以想到,如果 \(u=n\),那么第一列和第 \(n\) 列都至少有 \(1\) 个黑色格子,\(d=n\) 同理;如果 \(r=n\),那么第一行和第 \(n\) 行都至少有一个黑色格子,\(l=n\) 同理。

另外还有一种比较特殊的情况,就是当上面的四个数中的某些数 \(=n-1\)。如果 \(u=n-1\),那么第一列和第 \(n\) 列中的一列至少会有 \(1\) 个黑色格子,\(d=n-1\) 同理;如果 \(r=n-1\),那么第一行和第 \(n\) 行中的一行至少会有 \(1\) 个黑色格子,\(l=n-1\) 同理。

于是,我们不妨先设出所有的 \(u,r,d,l\) 所在的行列在输入限制下的最小黑色格子数。先把所有的 \(=n\) 的情况所影响的行列的最小黑色格子数加 \(1\),然后对于 \(=n-1\) 的情况,我们看当前还有那些行列的最小黑色格子数小于输入限制,就把那个行列的最小黑色格子数加 \(1\)(如果两个行或者两个列当前的最小黑色格子数都小于输入限制,随便加进去哪一个行列都行)。最后再来判断是否超过了输入限制即可。

如果上面的文字你并没有听懂,可以参考一下下面的代码实现。

Code

int n, u, r, d, l, limit[7], num[7];

int main() {
MT {
memset(limit, 0, sizeof(limit));
memset(num, 0, sizeof(num));
n = Rint, u = Rint, r = Rint, d = Rint, l = Rint;
if(u >= n - 1) limit[1] = u - (n - 2);
if(r >= n - 1) limit[2] = r - (n - 2);
if(d >= n - 1) limit[3] = d - (n - 2);
if(l >= n - 1) limit[4] = l - (n - 2);
num[1] += (limit[2] == 2) + (limit[4] == 2), num[2] += (limit[1] == 2) + (limit[3] == 2), num[3] += (limit[2] == 2) + (limit[4] == 2), num[4] += (limit[1] == 2) + (limit[3] == 2);
if(limit[1] == 1) {(num[2] < r ? num[2] : num[4])++;}
if(limit[2] == 1) {(num[1] < u ? num[1] : num[3])++;}
if(limit[3] == 1) {(num[2] < r ? num[2] : num[4])++;}
if(limit[4] == 1) {(num[1] < u ? num[1] : num[3])++;}
puts((u >= num[1] && r >= num[2] && d >= num[3] && l >= num[4]) ? "YES" : "NO");
}
return 0;
}

CF1494B Berland Crossword 题解的更多相关文章

  1. Edu Cf Round 105 (Div. 2) B. Berland Crossword 1.读懂题, 2. 思维

    一. 原题链接 https://codeforces.com/contest/1494/problem/B   二. 题意 + 题解: 没看懂题目, 懵了好久, 先狡辩一下当时误解的句子, 英语是硬伤 ...

  2. Educational Codeforces Round 105 (Rated for Div. 2)

    A. ABC String 题目:就是用'('和')'来代替A,B,C并与之对应,问是不是存在这样的对应关系使得'('和')'正好匹配 思路:第一个和最后一个字母是确定的左括号或者是右括号,这样就还剩 ...

  3. 【题解】Berland.Taxi Codeforces 883L 模拟 线段树 堆

    Prelude 题目传送门:ヾ(•ω•`)o Solution 按照题意模拟即可. 维护一个优先队列,里面装的是正在运营中的出租车,关键字是乘客的下车时间. 维护一个线段树,第\(i\)个位置表示第\ ...

  4. [CF846E]Chemistry in Berland题解

    这题乍一看是一道水树形DP(其实事实上它确实是树形DP),然后设f[i]表示第i个点所多余/需要的材料,然后我们愉快的列出了式子: if(f[v]<0) f[u] += f[v] * edges ...

  5. 题解 CF1359A 【Berland Poker】

    题意 给出 \(n,m,k\) ,表示 \(k\) 名玩家打牌,共 \(n\) 张牌,\(m\) 张王,保证 \(k|n\) ,记得分为 拿到最多王的玩家手中王数 \(-\)拿到第二多王的玩家手中的王 ...

  6. Codeforces Round #Pi (Div. 2) B. Berland National Library set

    B. Berland National LibraryTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...

  7. CodeForces 164 B. Ancient Berland Hieroglyphs 单调队列

    B. Ancient Berland Hieroglyphs 题目连接: http://codeforces.com/problemset/problem/164/B Descriptionww.co ...

  8. Codeforces Round #Pi (Div. 2) B. Berland National Library 模拟

    B. Berland National LibraryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...

  9. Codeforces-Educational Codeforces Round 53题解

    写之前,先发表下感慨:好久没写题解了,也许是因为自己越来越急利了,也可以说是因为越来越懒了. A. Diverse Substring 直接找一找有没有相邻的两个不同的字符即可. B. Vasya a ...

随机推荐

  1. 【Mysql】三大日志 redo log、bin log、undo log

    @ 目录 redo log(物理日志\重做日志) binlog(逻辑日志/归档日志) update语句执行流程 Uodolog(回滚日志/重做日志) undo log+redo log保证持久性 re ...

  2. deepin系统安装与linux磁盘分区

    制作系统盘工具 链接:https://pan.baidu.com/s/1zcV0oulUErUdU0PAGxTDdw 提取码:1111 链接:https://pan.baidu.com/s/13zBd ...

  3. Sentry 监控 - Snuba 数据中台架构(SnQL 查询语言简介)

    本文描述了 Snuba 查询语言 (SnQL). 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒 ...

  4. 详解如何用 CSS3 完成 3D transform变换

    Tips:阅读提示!!! 首先,本文针对的是3D transform变换的学习,所以你需要对 2D transform变换 有一定的了解 其次,需要说明的是,代码是一种需要自己不断实践的学科,建议各位 ...

  5. R语言与医学统计图形-【21】ggplot2标题

    ggplot2绘图系统--标题 在期刊杂志中,需要设置的图形标题并不多. 除了图形标题,还有坐标轴标题(标签).图例标题.脚注等. 标题函数:ggtitle,labs 坐标轴标题函数:xlab,yla ...

  6. Hosts文件详解

    一.缘由 关于我们工作室项目配置过程中,有一个重要但却容易被忽略的环节 - hosts文件的修改. 之前配置hosts文件的时候,只知道那么做就可以了,但并不知道其中的原因,由于开发任务的急迫,也就未 ...

  7. 11-String to Integer (atoi)

    字符串转整型,更新之后的leetcode题,需考虑各种情况, 测试过标准库的atoi函数,当字符串越界返回的值是错的, 而该题要求越界时的返回边界值,更加严谨. Implement atoi to c ...

  8. 字符scanf 的输入注意

    1.注意scanf 不能有空格,如果有空格会将空格给输入进去 scanf("d "):---有空格 和scanf("d");--没有空格 有很大的区别

  9. 一次“不负责任”的 K8s 网络故障排查经验分享

    作者 | 骆冰利 来源 | Erda 公众号 ​ 某天晚上,客户碰到了这样的问题:K8s 集群一直扩容失败,所有节点都无法正常加入集群.在经过多番折腾无解后,客户将问题反馈到我们这里,希望得到技术支持 ...

  10. java9 模块化 jigsaw

    java9并没有在语言层面做出很多改变,而是致力于一些新特性,如模块化,其核心就是解决历史遗留问题,为以后的jar包森林理清道路.模块化是一个很大的命题,就不讲那么细致了,关于java9的特性也有很多 ...