Nowcoder | [题解-N210]牛客OI月赛2-提高组
比赛连接戳这里^_^
我才不会说这是我出的题(逃)
周赛题解\((2018.10.14)\)
\(T1\)
\(25\sim50\)分做法\(:\)直接爆搜
作为一个良心仁慈又可爱的出题人当然\(T1\)要送分啦\(qwq\)
\(100\)分做法\(:\)
其实只需要看左上角就行了,因为题目描述写的很清楚,三个人的操作都是为了BLUESKY007能赢,所以游戏一定会结束,那么当横纵坐标最大的非\(B\)颜色方格变为\(B\)颜色时,可操作的方格范围显然是趋向收敛的,又因为操作规则的要求,左上角的方格在每次操作中都会按规则进行变换,当可操作范围收敛到左上角且左上角变为\(B\)颜色时,游戏结束,所以无论中间的操作是怎样进行的,最终左上角的方格一定会变为\(B\)颜色,而且进行操作的人数和操作变换长度相同,所以我们只需要判断左上角方格的颜色即可.
\(T2\)
\(10\)分做法\(:\)特判输出
毕竟数据范围给的那么小,\(n,m\)都\(\leq5\),显然是送分的啊\(qwq\)
\(20\)分做法\(:\)爆搜
就是很裸的爆搜,连优化剪枝之类的高级操作都不需要.但是为什么\(\min(n,m)\leq3\)?这个看下面证明就知道了\(qwq\)
\(100\)分做法\(:\)结论
我们不妨设\(n\)为长,\(m\)为宽
- \(m\leq2:\)显然对于任何一个位置,在图中都不存在另外一个位置使得两者之间相互可达,所以此时\(n\times m\)的所有位置都可以放置,此时答案为\(n\times m\)
- \(m=3:\)对于一个\(3\times n\)的图,其中对于第二行的所有点,在图中都不存在另外一个位置使得两者之间相互可达,所以第二行所有位置都可以放置,对于另外两行我们可以发现,\((1,1)\)和\((3,4)\)只能有一个位置放置,\((1,2)\)和\((3,5)\),\((1,3)\)和\((3,6)\),\((3,1)\)和\((1,4)\),\((3,2)\)和\((1,5)\),\((3,3)\)和\((1,6)\)同理.于是当我们最大化放置个数时,每相邻的六列的放置总是相同的且任意相邻六列至多可以放置\(12\)个,所以当我们按如图所示的方式开始时会达到最大值,此时答案为\(n+6\times\lfloor\frac{n}{6}\rfloor+2\times\min(n\%6,3)\)

- \(m=4:\)同样的,对于一个\(4\times n\)的图,仍然满足相邻六列最多放置\(12\)个,但是对于不同的\(n\)存在不同的起始方案\(:\)
- \(n\%6=0:\)从任意列开始,此时答案为\(2n\)
- \(n\%6\in[1,2]:\)从第\(1\)列开始,此时答案为\(2n+2\times(n\%6)\)
- \(n\%6\in[3,4]:\)从第\(6\)列开始,此时答案为\(2n+4\)
- \(n\%6=5:\)从第\(6\)列开始,此时答案为\(12\lceil\frac{n}{6}\rceil\)
所以如果\(m=4\),能考虑到以上情况的话自然就不是写爆搜的了,所以对爆搜的数据范围设置为\(m\leq3\),否则会\(WA\)

- \(m\geq5:\)如图为\(n=7,m=5\)时的放置方案,类似的,对于任意大小的图都可以进行类似的放置,此时答案为\(\lceil\frac{mn}{2}\rceil\)
\[
\begin{vmatrix}
1&0&1&0&1&0&1\\
0&1&0&1&0&1&0\\
1&0&1&0&1&0&1\\
0&1&0&1&0&1&0\\
1&0&1&0&1&0&1\\
\end{vmatrix}
\]
\(T3\)
\(20\)分做法\(:\)直接输出\(0\)
根据样例解释,\([0,1000]\)内不存在"好朋友",所以对于\(20\%\)数据\(l_i\leq r_i\leq10^3\)显然其中所有的询问答案均为\(0\),所以直接输出就能骗到\(20\)分
\(40\)分做法\(:O(tr\lg(r))\)逐个检验
\(100\)分做法\(:O(t\lg(r))\)数位\(DP\)
因为"好朋友"的定义为含有"007",所以有很多情况都会被视为含有"007",例如"10707","17007"等,此时我们发现对于含有"007"的情况的讨论比较复杂,所以我们不妨讨论不含"007"的情况,也即对于任意的含有\(7\)的数,其中每一个\(7\)前都至多有\(2\)个\(0\),由此可以设\(f_{ij}\)表示在前\(i\)位有\(j\)个\(0\)的数的个数,在数位\(DP\)过程中存当前位置和已有的\(0\)的个数,显然在\(0\)的个数\(\geq2\)时,后面的数位上都不可能再有\(7\).在求出不含"007"的数之后,用区间\(l_i,r_i\)上数的个数减去不含"007"的数的个数即可得到在\(l_i,r_i\)上含有"007"的数的个数
Nowcoder | [题解-N210]牛客OI月赛2-提高组的更多相关文章
- 牛客OI月赛12-提高组题解
牛客OI月赛12-提高组 当天晚上被\(loli\)要求去打了某高端oj部分原创的模拟赛,第二天看了牛客的题觉得非常清真,于是就去写了 不难发现现场写出\(260\text{pts}\)并不需要动脑子 ...
- Nowcoder | [题解-N189]牛客OI赛制测试赛3
这场说实话确实水(逃*1),表示差一点就AK了(逃*2),然而被卡两个特判的我\(ssfd\)...\(qwq\) 表示这是第一次发整场比赛的题解...还请各位大佬原谅我太蒻写的垃圾啊\(qwq\). ...
- 牛客OI周赛8-提高组A-用水填坑
牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...
- 牛客OI周赛9-提高组题目记录
牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...
- 牛客OI周赛7-提高组 A 小睿睿的等式
链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...
- 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)
链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...
- 牛客OI周赛2-提高组
A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...
- 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)
https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...
- 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)
链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...
随机推荐
- linux 安装 SVN server
安装 使用yum安装非常简单: yum install subversion 配置 2.1. 创建仓库 我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下 ...
- Windows10 等 administrator 打开IE 或者edge的方法
gpedit.msc 组策略处理即可
- C#如何调用C++的dll
背景 一个项目,算法部分使用C++的openCV库编写图像处理程序,编译成dll,用户界面采用C#编写,去调用该dll暴露的接口. C#编写的是托管代码,编译生成微软中间语言,而普通C++代码则编译 ...
- Django Rest framework 框架
一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...
- thymeleaf 引入公共html注意事项
详细连接https://blog.csdn.net/u010260737/article/details/83616998 每个页面都会用到分页.html或者头部.html.尾部.html,在其他页面 ...
- composer 下载包慢的解决方法
方法一: 修改 composer 的全局配置文件(推荐方式) 打开命令行窗口(windows用户)或控制台(Linux.Mac 用户)并执行如下命令: composer config -g repo. ...
- fastclick的介绍和使用
移动端点击延迟事件 1. 移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟 2. 原因: 移动端的双击会缩放导致click判断延迟 解决方式 1. 禁用缩放 `<meta nam ...
- mktemp -t -d用法
mktemp命令用于建立暂存文件或者文件夹,帮助文档如下: Usage: mktemp [OPTION]... [TEMPLATE] Create a temporary file or direct ...
- python3 自动识图
一.安装依赖库 pip install pytesseract pip install pillow 二.安装识图引擎tesseract-ocr https://pan.baidu.com/s/1Qa ...
- 莫烦scikit-learn学习自修第一天【scikit-learn安装】
1. 机器学习的分类 (1)有监督学习(包括分类和回归) (2)无监督学习(包括聚类) (3)强化学习 2. 安装 (1)安装python (2)安装numpy >=1.6.1 (3)安装sci ...