比赛连接戳这里^_^
我才不会说这是我出的题(逃)
周赛题解\((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. CSS颜色代码 颜色值 颜色名字大全

    颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义.对光源进行设置的最低值可以是 0(十六进制 00).最高值是 255(十六进制 FF).从 0 到 25 ...

  2. sqlserver笔记

    表结构: 一,字段类型sqlserver jdbc java char char Stringnchar nchar Stringvarchar varchar Stringnvarchar nvar ...

  3. Es5中的类和静态方法 继承

    Es5中的类和静态方法 继承(原型链继承.对象冒充继承.原型链+对象冒充组合继承) // es5里面的类 //1.最简单的类 // function Person(){ // this.name='张 ...

  4. html js 表单提交前检测数据

    通过使用form的onsibmit来控制是否提交数据 返回值为真是提交,其他不变,示例如下: JS部分 function check() { var newPwd = document.getElem ...

  5. Redis 使用命令行的方式 获取 hash type key 的value值

    1. 之前只是非常简单的看了下 get key 和 set key 但是这样 设置的 key value 应该是都 string 类型的 2. 但是没考虑过其他类型的 是如何获取 相关内容的 ,一直 ...

  6. Laravel5.5+ 区分前后端用户登录

    Laravel 的用户认证是通过 Auth Facade 门脸实现的,手动认证可是使用  Auth::login() 或 Auth::attempt() 这两个方法实现. 以下内容纯属个人实现,也许有 ...

  7. python爬虫之redis环境简单部署

    Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久 ...

  8. FindBugs-IDEA插件的使用

    前言 Findbugs很多人都并不陌生,Eclipse中有插件可以帮助查找代码中隐藏的bug,IDEA中也有这款插件.这个插件可以帮助我们查找隐藏的bug,比较重要的功能就是查找潜在的null指针.  ...

  9. python之路--网络编程之socket

    一 . 网络编程 CS架构 客户端服务端架构 服务端:提供服务的 客户端:享受服务的 BS架构:浏览器和服务端 网络通信流程: 集线器:将所有连接上它的电脑全部联通起来 交换机:升级版的集线器 网卡: ...

  10. Linux基础学习(10)--Shell基础

    第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...