【NOIP2013模拟】终极武器(经典分析+二分区间)
No.2. 【NOIP2013模拟】终极武器
- 题意:
- 给定你一些区间,然后让你找出\(1\sim 9\)中的等价类数字.
- 也就是说在任何一个区间里的任何一个数,把其中后\(k\)位中的某一位换成等价类数字,仍然在某个区间中。
- \(n\le 10^5, k\le 18\)
据说这是一道防AK题,考场上能拿到满分确实是比较困难的.
要有耐心的推,先从简单情况入手.
这里给出详细的题解:
因为要判断等价类数字,所以我们可以用一个矩阵\(a[i][j]=1\)表示\(i,j\)是等价的,否则不等价.
此时例如我要判断\(12345\sim 12378\)中的等价类数字,这个比较容易,假设\(k=3\),则当我枚举倒数第\(3\)位时,注意到\(l,r\)的前三位都相同,此时我只需要判断把\(3\)改成\(x\)之后\(12x45\sim 12x78\)是否都出现且出现在在同一个区间中.
如何判断一个区间\(l,r\)是否出现在同一区间?
我们可以把多个区间首尾合并一下,因为保证了区间没有交集,所以可以直接二分一下\(l,r\)所在区间,判断是否相同即可.
解决完这个问题之后,我们就可以完美解决上面的例子.
但如果是区间\(12345\sim 12758\)呢?此时枚举到第\(3\)位时,会发现,区间\(3\sim 7\)都是第\(3\)位原本存在的数.
所以我们需要先枚举第\(3\)位原本的数,然后再枚举换成什么数,看一下是否出现在对应区间里.
可以分成三类,即\(3,4\sim 6,7\),出现的区间分别是\(45\sim 99, 0\sim 99, 0\sim 58\).
但还有第三种情况,例如\(12345\sim 78543\),此时假设依然枚举第\(3\)位,会发现,前两位的数都不相同。
这时,需要仔细观察,会发现,其实\(13[][][] \sim 77[][][]\)这些位上的数是没任何用的,因为不管你倒数第三位怎么改,前两位已经出现在区间中,所以这样的改动是没有任何意义的,所以我们也不需要判断.
然后问题就转化为判断\(12345\sim 12999\)以及\(78000\sim 78543\)这两段区间了.
于是又转化为之前熟悉的问题.
至此,本题完美解决,总结一下,用到了两个套路:
- 用矩阵表示等价类.
- 用二分判断区间是否出现,合并区间的思想很重要.
【NOIP2013模拟】终极武器(经典分析+二分区间)的更多相关文章
- JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)
3462. [NOIP2013模拟联考5]休息(rest) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- 【NOIP2013模拟联考7】OSU
[NOIP2013模拟联考7]OSU 描述 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分, ...
- HDU 4768 (二分区间---涨姿势)
题意:告诉n组A,B,C,按照A + k * C生成等差数列,问这n组数列中哪个数字出现了奇数次以及出现了几次,题目保证最多只会出现一个这种数字. 分析:读完题并没有思路,后来知道是二分区间,枚举是哪 ...
- 【BZOJ5308】[ZJOI2018]胖(模拟,ST表,二分)
[BZOJ5308][ZJOI2018]胖(模拟,ST表,二分) 题面 BZOJ 洛谷 题解 首先发现每条\(0\)出发的边都一定会更新到底下的一段区间的点. 考虑存在一条\(0\rightarrow ...
- CSU 1592 石子合并 (经典题)【区间DP】
<题目链接> 题目大意: 现在有n堆石子,第i堆有ai个石子.现在要把这些石子合并成一堆,每次只能合并相邻两个,每次合并的代价是两堆石子的总石子数.求合并所有石子的最小代价. Input ...
- JZOJ 3463. 【NOIP2013模拟联考5】军训
3463. [NOIP2013模拟联考5]军训(training) (Standard IO) Time Limits: 2000 ms Memory Limits: 262144 KB Deta ...
- JZOJ 3505. 【NOIP2013模拟11.4A组】积木(brick)
3505. [NOIP2013模拟11.4A组]积木(brick) (File IO): input:brick.in output:brick.out Time Limits: 1000 ms Me ...
- JZOJ 3526. 【NOIP2013模拟11.7A组】不等式(solve)
3526. [NOIP2013模拟11.7A组]不等式(solve) (File IO): input:solve.in output:solve.out Time Limits: 1000 ms M ...
- HDU 5875 st+二分区间
题目大意:给你n个数,q次询问,每次询问区间[l, r],问a[i]%a[i + 1] % a[i + 2]...%a[j](j <= r)的值 思路:st预处理维护,再二分区间,复杂度n*(l ...
随机推荐
- 使用sqlyog或者navicat连接mysql提示1862错误解决
mysql的bin目录下执行 mysqladmin -uroot -p password 依次输入旧密码.新密码.确认新密码 修改后重新使用sqlyog或navicat连接成功 问题解决!
- JHipster生成微服务架构的应用栈(一)- 准备工作
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- wc基础功能
第一次作业 项目地址 https://gitee.com/xxlznb/WordCount PSP WordCount 预估耗时(分钟) 实际耗时 计划 20 30 预估任务需要时间 20 30 开发 ...
- 尝试Java,从入门到Kotlin(上)
之前一直使用C#开发,最近由于眼馋Java生态环境,并借着工作服务化改造的契机,直接将新项目的开发都转到Java上去.积攒些Java开发经验,应该对.NET开发也会有所启发和益处. 从理论上说,Jav ...
- swift修改UITextfield的Placeholder字体大小和颜色
第一种方法: self.userNumber.setValue(UIColor.lightGray, forKey: "_placeholderLabel.textColor") ...
- Linux中Zabbix4.0的搭建
Zabbix简介 Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti.nagios类似,提供分布式监控以及集中的web管理界面.zabbix具备常见商业监控软件所具备的功能,例如主机 ...
- Bootstrap -- 文本,背景,其他样式
Bootstrap -- 文本,背景,其他样式 1. 文本样式:展示了不同的文本颜色 使用文本样式: <!DOCTYPE html> <html> <head> & ...
- git如何设置ssh密钥
git设置ssh密钥 目前git支持https和git两种传输协议,github分享链接时会有两种协议可选: 1.Clone with SSH 2.Clone with HTTPS git在使用htt ...
- RabbitMQ远程执行任务RPC。
如果想发一条命令给远程机器,再把结果返回 这种模式叫RPC:远程过程调用 发送方将发送的消息放在一个queue里,由接收方取. 接收方再把执行结果放在另外一个queue里,由发送方取 实际上,发送方把 ...
- 解决connect() failed (111: Connection refused) while connecting to upstream
使用nginx时, 有可能遇到connect() failed (111: Connection refused) while connecting to upstream的问题. 如果upstrea ...