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. 测试平台系列(81) 编写在线执行Redis功能

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上一节我们牛刀小试,编写了 ...

  2. settings.json文件语法错误先清理错误再重试

    运行官方demo,提示要微信开发者工具,导入路径出这玩意. 点击工具,设置,源码试图,把左边代码全部复制到右边, "weApp.devTools.path":"W:\\微 ...

  3. Python 3 快速入门 1 —— 数据类型与变量

    本文假设你已经有一门面向对象编程语言基础,如Java等,且希望快速了解并使用Python语言.本文对重点语法和数据结构以及用法进行详细说明,同时对一些难以理解的点进行了图解,以便大家快速入门.一些较偏 ...

  4. Codeforces 700D - Huffman Coding on Segment(莫队+根分)

    Codeforces 题目传送门 & 洛谷题目传送门 好家伙,刚拿到此题时我连啥是 huffman 编码都不知道 一种对 \(k\) 个字符进行的 huffman 编码的方案可以看作一个由 \ ...

  5. Codeforces 1089I - Interval-Free Permutations(析合树计数)

    Codeforces 题面传送门 & 洛谷题面传送门 首先题目中涉及排列的 interval,因此可以想到析合树.由于本蒟蒻太菜了以至于没有听过这种神仙黑科技,因此简单介绍一下这种数据结构:我 ...

  6. 洛谷 P5897 - [IOI2013]wombats(决策单调性优化 dp+线段树分块)

    题面传送门 首先注意到这次行数与列数不同阶,列数只有 \(200\),而行数高达 \(5000\),因此可以考虑以行为下标建线段树,线段树上每个区间 \([l,r]\) 开一个 \(200\times ...

  7. 【GS文献】基因组选择在植物分子育种应用的最新综述(2020)

    目录 1. 简介 2. BLUP类模型 3. Bayesian类模型 4. 机器学习 5. GWAS辅助的GS 6. 杂交育种 7. 多性状 8. 长期选择 9. 预测准确性评估 10. GS到植物育 ...

  8. Go知识点大纲

    目录 1. 基本介绍 2. 安装及配置 3. 变量 4. 常量 5. 数据类型 5.1 numeric(数字) 5.2 string(字符串) 5.3 array(数组) 5.4 slice(切片) ...

  9. A Child's History of England.37

    Many other noblemen repeating and supporting this when it was once uttered, Stephen and young Planta ...

  10. css相关,position定位详解

    CSS 有两个最重要的基本属性,前端开发必须掌握:display 和 position. display属性指定网页的布局.两个重要的布局,弹性布局flex和网格布局grid. 本文介绍非常有用的po ...