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 环境变量梳理
Linux中的环境变量有两种:全局变量和局部变量: 定义.访问.删除局部变量 查看全局变量 可以使用printenv或者env命令来打印所有的全局变量. 访问某一项全局变量,可以使用printenv ...
- 使用Browser请求 和 在cli中运行程序的分析
在browser中请求后端的一个程序之后,立马将窗口关闭,服务器端的程序是否会挂起或者终止,还是继续执行? 如果是继续执行,那么执行完毕后,结果去了哪里?-->apache的工作流程 使用Bro ...
- Failure to transfer org.apache.maven:maven-archiver:pom:2.5 from https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval o
pom.xml报错: Failure to transfer org.apache.maven:maven-archiver:pom:2.5 from https://repo.maven.apach ...
- [转帖]KMS 是什么 以及 优缺点
产品激活 比如Windows激活 , office激活 等激活的原理是什么? KMS等激活工具安全吗? http://www.cnblogs.com/flowerslip/p/8370832.html ...
- 剑指offer(20)二叉搜索树与双向表
题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 思路一:递归法 1.将左子树构造成双链表,并返回链表头节点. 2.定位至左子 ...
- python学习笔记(11)--数据组织的维度
数据的操作周期 存储 -- 表示 -- 操作 一维数据表示 如果数据有序,可以使用列表[]:如果数据没有顺序,可以使用集合{} 一维数组存储 存储方式一:空格分隔 ,使用一个或多个空格分隔进行分隔, ...
- UDP反射DDoS攻击原理和防范
东南大学:UDP反射DDoS攻击原理和防范 2015-04-17 中国教育网络 李刚 丁伟 反射攻击的防范措施 上述协议安装后由于有关服务默认处于开启状态,是其被利用的一个重要因素.因此,防范可以从配 ...
- linux 挂载windows下目录,其它linux机器nfs的目录,自己dd的文件
如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ 挂载window下共享的目录 //192.168.0.11/share /mnt 挂载其它linux机器下目录 ...
- Docker 部署应用、jar 工程 docker 方式部署
https://blog.csdn.net/jiangyu1013/article/details/81988342
- codeforces525B
Pasha and String CodeForces - 525B Pasha got a very beautiful string s for his birthday, the string ...