C [yLOI2019] 棠梨煎雪

Background

岁岁花藻檐下共将棠梨煎雪

自总角至你我某日辗转天边

天淡天青 宿雨沾襟

一年一会信笺却只见寥寥数言

——银临《棠梨煎雪》

Description

给定 \(m\) 个长度为 \(n\) 的可能含有 的 01 串,其中 ? 既能代表 0 也能代表 1, \(q\) 次操作,每次给定一个区间,求有多少 01 串满足区间内的所有字符串都可以解释成该 01 串,或者单点修改某个字符串。

Limitations

Solution

子任务 \(1\):

输出 \(0\) 即可得分,期望得分 \(5~pts\)。

子任务 \(2\):

考虑 \(n\) 只有 \(10\),因此可以 \(O(2^n)\) 去枚举所有可能的串,然后对于每个询问 \(O(m)\) 的逐个判定是否合法。时间复杂度 \(O(qm2^n)\),期望得分 \(10~pts\)。

子任务 \(3\):

考虑对于一段所有字符串的第 \(x\) 个字符,一共有四种可能:确定为 \(0\);确定为 \(1\);都可以;都不可以。如果 \(0/1\) 都不可以,则答案为 \(0\),因为不会有任何一个字符串匹配该区间。如果确定为某个数,则这一位只有一种可能;否则这一位有两种可能。根据乘法原理,如果有 \(a\) 个位置有两种可能,则本次询问的答案为 \(2^a\)。

因此对于每个询问,\(O(nm)\) 地去遍历区间内所有字符即可。时间复杂度 \(O(nmq)\),期望得分 \(15~pts\)。

子任务 \(4\):

考虑 \(n\) 只有 \(30\),可以状压到 int 中。具体的,维护两个 int,第一个 int 维护对应位是否确定是 \(0\) 或 \(1\),第二个 int 维护如果确定是 01 了那么具体是 0 还是 1

例如,对于单个字符串,它所有的为 ? 的位置,在第一个 int 中对应位置是 0,所有为 01 的位置,在第在个 int 中对应的位置是 1,在第二个 int 中对应的位置是自身的值。

考虑 \(a_1,~a_2\) 是询问的左端点到某个字符串之前所维护的两个 int,\(b_1,~b_2\) 是该字符串的两个 int,现在合并这两个信息。

如果某一位置即不可以是 \(1\),也不可以是 \(0\),那么该字符串不为 ? 的位置在 \(b_2\) 中对应的值应该至少有一个和 \(a_2\) 中对应位置的值且 \(a_1\) 的该位置为 \(1\),位运算可以表现为 \((a1~\&~b_1)~\&~(a_2~\oplus~b_2) ~\neq 0\),则该询问的答案为 \(0\)。

否则这两段信息可以合并:将他们已经确定字符的位置合并起来,然后将确定位置对应的值合并起来即可。于是 \(a_1\) 对 \(b_1\) 取或, \(a_2\) 对 \(b_2\) 取或即可。

最终该询问 \(0/1\) 都可以的位置的个数即为 \(a_1\) 中 \(1\) 的个数。

时间复杂度 \(O(mq)\),期望得分 \(15~pts\)

子任务 \(5\):

由于 \(n\) 只有 \(1\),问题变成了求某个区间内的字符是不是全是 0,全是 1,全是 ?01 都有。可以考虑用线段树非常轻松的维护这样的信息。

时间复杂度 \(O(q \log m)\),期望得分 \(15~pts\)

子任务 \(6\):

世界上没有什么事情是开一棵线段树不能解决的,如果有,那就开 \(30\) 棵。

时间复杂度 \(O(nq \log m)\),期望得分 \(10~pts\)

子任务 \(7\):

考虑结合子任务 \(4\) 和子任务 \(5\) 的做法,发现两个区间的状压信息也可以用子任务 \(4\) 的方法合并。因此用线段树维护这两个 int 的状压信息即可。

时间复杂度 \(O(q \log m)\),期望得分 \(30~pts\)

【线段树】【P5522】[yLOI2019] 棠梨煎雪的更多相关文章

  1. P5522 [yLOI2019] 棠梨煎雪

    updata on 2020.3.19 今天把博客从洛谷往博客园搬,图炸了 其实早就发现了,懒得管 那图其实就是一个用dev自带的调试功能调试时,RE了的报错 当时觉得很奇怪看不出是啥,现在再看已经觉 ...

  2. 洛谷P5522 【[yLOI2019] 棠梨煎雪】

    区间操作考虑用线段树维护. 建\(n*2\)棵线段树,前\(n\)棵线段树维护每个串的第i位是否是0. 后\(n\)棵线段树维护每个串的第i位是否是1. 如果是问号的话,直接跳过就好(通过1和0能看出 ...

  3. 【6.24校内test】T3 棠梨煎雪

    [题目背景] 岁岁花藻檐下共将棠梨煎雪. 自总角至你我某日辗转天边. 天淡天青,宿雨沾襟. 一年一会信笺却只见寥寥数言. ——银临<棠梨煎雪> [问题描述] 扶苏正在听<棠梨煎雪&g ...

  4. 6.25考试整理:江城唱晚&&不老梦&&棠梨煎雪——题解

    按照旧例,先安利一下主要作者:一扶苏一 以及扶苏一直挂念的——银临姐姐:银临_百度百科 (滑稽) 好哒,现在步入正题: 先看第一题: 题解: 在NOIP范围内,看到“求方案数”,就说明这个题是一个计数 ...

  5. Bzoj[Usaco2018 Feb]5194 Snow Boots(线段树)

    Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪 .在Farmer John的农舍的地窖中,总共有B双靴子,编号为1… ...

  6. 【BZOJ 4662】 4662: Snow (线段树+并查集)

    4662: Snow Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 136  Solved: 47 Description 2333年的某一天,临冬突 ...

  7. BZOJ5194: [Usaco2018 Feb]Snow Boots(排序&set)(可线段树优化)

    5194: [Usaco2018 Feb]Snow Boots Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 102  Solved: 79[Subm ...

  8. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

  9. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

随机推荐

  1. centos7上配置mysql8的双主互写

    注意:1.主库1:10.1.131.75,主库2:10.1.131.762.server-id必须是纯数字,并且主从两个server-id在局域网内要唯一. [主节点1]vi /etc/my.cnf[ ...

  2. kvm虚拟机日常管理与配置

    1.  查看KVM虚拟机配置文件及运行状态 (1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/ autostart目录是配置kvm虚拟机开机自启动目录.    (2) vir ...

  3. linux服务器可以访问IP访问不了域名地址

    1.curl www.baidu.com报错,curl 183.232.231.173可以或者nslookup+域名,nslookup+IP2.这个是因为linux服务器没有配置DNS域名服务器地址导 ...

  4. 【转】西门子PLC以太网 通讯协议 解析

    一直想把三菱和西门子这两个使用频率最高的PLC上位通讯,融合到WCS系统的框架里: 现在三菱主流使用Q系列,使用的是MC协议, 前一段时间也写过一个入门介绍: 三菱Q系列通讯方式设计说明 去年8月份, ...

  5. 使用Ueditor上传图片到图片服务器(二)

    上一篇主要写了前端部分如何配置ueditor的上传路径,已经jsp页面中如何使用ueditor的编辑器功能以及如何配置单独的图片上传功能. 这一篇,我分两部分:第一部分是搭建图片服务器以及配置ftp上 ...

  6. FreeMarker学习系列之一

    一. 基本概念 ${...}: FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式插值 FTL 标签 (FreeMarker模板的语言标签): FTL标签和HTML标签有一些相似 ...

  7. webview学习

    Android中WebView使用6,js调java实现播放视频 https://blog.csdn.net/zhaihaohao1/article/details/77993890 android ...

  8. Centos7 安装腾达U12驱动无线网卡

    解决过程: 办法一: CentOS7.3 默认的内核版本较低,为 3.10.0-514.el7.x86_64. 无论是使用腾达官方提供的驱动,还是github 上的驱动(链接 https://gith ...

  9. windows设置多个JDK环境

    1.查看jdk版本 java -version 2.查看JAVA_HOME和PATH的变量值 echo %JAVA_HOME% set path 3.临时修改环境变量JAVA_HOME和PATH的变量 ...

  10. SSIS-WMI监视文件夹

    在文档交互数据时,通常会排个job每隔几分钟执行来解析文档,但是jOb不能排的太频繁了,所以文档不能及时的被解析. 在SSIS中可以使用WMI这个组件来监视文件夹,一旦有新文档丢入就马上执行解析程序, ...