比赛连接戳这里^_^
我才不会说这是我出的题(逃)
周赛题解\((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-提高组的更多相关文章

  1. 牛客OI月赛12-提高组题解

    牛客OI月赛12-提高组 当天晚上被\(loli\)要求去打了某高端oj部分原创的模拟赛,第二天看了牛客的题觉得非常清真,于是就去写了 不难发现现场写出\(260\text{pts}\)并不需要动脑子 ...

  2. Nowcoder | [题解-N189]牛客OI赛制测试赛3

    这场说实话确实水(逃*1),表示差一点就AK了(逃*2),然而被卡两个特判的我\(ssfd\)...\(qwq\) 表示这是第一次发整场比赛的题解...还请各位大佬原谅我太蒻写的垃圾啊\(qwq\). ...

  3. 牛客OI周赛8-提高组A-用水填坑

    牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...

  4. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  5. 牛客OI周赛7-提高组 A 小睿睿的等式

    链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...

  6. 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)

    链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...

  7. 牛客OI周赛2-提高组

    A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  8. 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)

    https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...

  9. 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)

    链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...

随机推荐

  1. python 实现快速排序

    一.快排思想 快速排序可以理解为是对冒泡排序的一种改进,把一组数,按照初始选定的标杆(参照数), 分别从两端开始排序,左端'i'只要小于标杆(参照数)的数,右端'j'只要大于标杆(参照数)的数, i- ...

  2. Linux 典型应用之常用命令

    软件操作相关命令 软件包管理 (yum) 安装软件 yum install xxx(软件的名字) 如 yum install vim 卸载软件 yum remove xxx(软件的名字) 如 yum ...

  3. [转帖]全国产 台式机/笔记本/服务器都有 方正龙芯3A3000整机三连发

    台式机/笔记本/服务器都有 方正龙芯3A3000整机三连发 2019年03月29日 17:17 4171 次阅读 稿源:快科技 7 条评论 https://www.cnbeta.com/article ...

  4. 解决 linux 下面解压缩 中文文件名乱码问题的方法 unzip -O CP936

    Linux 解压缩 zip包中文目录出现乱码的问题. 出现问题如图示: unzip -O CP936 xxx.zip 用这种方式处理一下就好了.

  5. v-router几种定义方式

    第一种 const router = new VueRouter({ routes: [{ path: '/newSongs', component: require('../views/NewSon ...

  6. 【纪录】Proxychain4 使用部署以及利用 ss 加速下载操作

    我觉得这个方案用来解决 linux 机器上面 apt-get 和 yum 国外源拉去取过慢的问题还是还不错的. 参看下面两个教程. Reference: https://brickyang.githu ...

  7. webpack安裝和卸載

    webpack安裝和卸載 安裝: 先裝好node和npm: 安裝package.json:進入到根目錄,運行npm init 新建全局webpack:cd退到全局目錄,運行npm install -g ...

  8. 遍历map中的内容

    Map<String, CartItem> cartItems = cart.getCartItems();for(Map.Entry<String, CartItem> en ...

  9. Android组件化、模块化、插件化

    组件:指的是单一的功能组件,如地图组件(MapSDK).扫码组件(QRCode).支付组件(AnjukePay).路由组件(Router)等等: 模块:指的是独立的业务模块,如新房模块(NewHous ...

  10. python时间模块datetime

    datetime模块 datetime在python中比较常用,主要用来处理时间日期,使用前先倒入datetime模块.下面总结下本人想到的几个常用功能. 1.当前时间(日期.小时.字符串时....) ...