ZR提高失恋测4

比赛链接

A

(方便讨论,设读入的串为\(S,T\)答案串为\(A\))

首先\(*\)只会有一个

这是这道题目中非常重要的一个结论

简单证明一下?

因为\(*\)可以代表所有的字符串,所以一个\(*\)肯定是可以满足第一个和第二个限制

我们只需要在满足这两个限制的基础上再去尽量满足其他的限制就好了

所以我们接下来只讨论最终答案中会存在\(*\)的情况(不存在\(*\)的情况比较简单,特判掉就好)

接下来考虑如何使得长度最长

首先我们设\(sum_S,sum_T\)分别表示两个串中\(*\)的数量

长度最长只可能是\(\max(len_S - sum_S,len_T - sum_T) + 1\)(因为\(*\)可能是空串)

而且最长长度一定是可以达到的

如何使得问号数量最少?

我们考虑,因为\(*\)只有一个,而且答案的长度为\(l(l = \max(len_S - sum_S,len_T - sum_T) + 1\)

那么我们考虑枚举\(*\)的位置\(i\)

那么答案串的前 \(i - 1\)位一定能够和\(S\)的前\(i - 1\)位和\(T\)的前\(i - 1\)位匹配

如何匹配前缀?

首先能够匹配的大前提下是之前没有出现过\(*\)

一旦出现\(*\),之后的匹配的对应部分应该全是\(?\)(因为\(*\)不定长)

(注意我们这里的匹配只是为了寻找问号个数,并不是最终的\(A\))

比如说
\[
a*b\\
aab\\
\]
前缀匹配应该是\(a??\)

因为后面一定存在我们枚举的\(*\)的位置,所以不要担心上面的\(*\)无法匹配

我们这里只是简单讨论一下如何寻找问号的数量

所以这样我们就能够简单处理出每个前缀对应的问号的贡献

同理我们还要对串进行后缀匹配,处理方式相同
\[
a*b\\
aab
\]
的后缀匹配是\(??b\)

我们现在可以快速的计算出每个前缀和后缀的\(?\)的数量

在\(i\)设\(*\)的\(?\)数量就是\(pre_{i - 1} + suf_{i + 1}\)

所以我们就可以在保证问号数量最少的时候同时保证字典序最小

代码

B

首先,还是那个非常常用的结论

一个数的质因子个数不会大多

\(10^6\)的数最多有\(7\)个质因子

所以还是考虑没一个质因子的贡献

我们对序列

把包含这个质因子的地方看做\(1\),否则看做\(-1\)

一个区间\([l,r]\)合法,当且仅当

\(S_{r} - S_{l - 1} \ge 0\)(\(S\)是前缀和,这还是比较明显的)

然后我们可以得到一个比较简单的做法

暴力枚举区间check

然后有一个小优化

我们枚举质因子只需要枚举\(\le \sqrt{w_i}\)的

剩下的如果存在在单独枚举

这样时间复杂度为\(n^3\)(但是跑不满)所以可以通过1000

接下来想想,我们这个做法没有用到一个数最多贡献\(7\)次这个条件

这就提示着我们要只考虑包含这些质因子的位置

因为所有质因子做法相同,这里只考虑一个质因子

我们设\(p_i\)表示包含这个质因子的第\(i\)个位置(从小到大排序之后的)

之后发现

其实一个区间合法的本质是这个区间内包含这个质因子的数的个数要大于等于不包含这个质因子的数的个数

我们二分一个答案\(mid\)判断是否存在长度大于等于mid的区间

那么对于\(p_i\)有贡献的点\(j\)一定满足\(i - \lceil\frac{ mid }{2}\rceil \ge j\)

之后还要满足\(S_{p_i} - S_{p_j - 1} >=0\)

所以我们要类似单调队列那样维护\([1,i - \lceil\frac{ mid }{2}\rceil]\)中\(S_{p_j - 1}\)的最小值即可

每次尝试寻找合法解

代码

ZR提高失恋测4的更多相关文章

  1. ZR提高失恋测3

    ZR提高失恋测3 题目链接 (感觉这一场比以往的简单了一些) 估分 100 + 40 + 40 得分 100 + 60 + 40 ??? A 首先,我们能够想到一个比较简单的\(n^2\)做法, 枚举 ...

  2. ZR提高失恋测2(9.7)

    ZR提高失恋测2(9.7) 网址http://www.zhengruioi.com/contest/392 版权原因,不放题面 A 首先,我们发现对于匹配串\(s\)中所有满足\(s_i \not = ...

  3. ZROI CSP-S失恋测(1)

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "怎么大家一个暑假不见都变菜了啊."--蔡老板 A 考虑一个\(nk^2\)的dp,按\(w_i\)排序,则每个组 ...

  4. ZR 提高十连 DAY 4

    哇 这题目怎么一次比一次毒瘤 当然这次还好 有会做的题目. T1 一眼看上去 毒瘤!再看一眼 我真不想看了 扔了. T2 哇感觉能写 哇这不是 随便都有40分了么 二分?优化一下65到手了.然后剩下的 ...

  5. ZROI 提高十连测 Day1

    第一天的提高模拟测 考前特意睡了20min 还是歇菜了,果然自己菜是真实的. 题目质量海星 但是我都不会这是真的...题目由于是花钱买的这里就不放了 LINK:problem 熟悉我的人应该都知道账号 ...

  6. Java下好用的开源库推荐

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定 ...

  7. 【科研论文】基于文件解析的飞行器模拟系统软件设计(应用W5300)

    摘要: 飞行器模拟系统是复杂飞行器研制和使用过程中的重要设备,它可以用来模拟真实飞行器的输入输出接口,产生与真实系统一致的模拟数据,从而有效避免因使用真实飞行器带来的高风险,极大提高地面测发控系统的研 ...

  8. NOIP2018游记(更新完毕)

    10.13 初赛 Day -1 考前 这一次的考场从暗♂德华兴改到了长沙市一中,一进去:我一看,考场在哪???这一中比长郡大了好多,而且连指示牌都没有,这时碰见了谢总,谢总告诉我们在第二教学楼.路上还 ...

  9. 完结篇OO总结

    目录 前言 一.第四单元两次架构设计 二.架构设计及OO方法理解的演进 三.测试理解与实践的演进 四.课程收获 五.改进建议 前言 持续了17周的OO终于走向了尾声,想想寒假的时候连类都不知道是什么, ...

随机推荐

  1. [idea]idea配置Jrebel 标签: ideatomcatjrebel 2017-03-14 09:23 547人阅读 评论(21

    上篇博客讲了如何为idea设置tomcat,这篇博客要给大家推荐Jrebel,其实eclipse上也可以配置Jrebel,但是在使用eclipse的时候并没有发现这些东西,还是习惯使然,对一个比较熟悉 ...

  2. Ubuntu 16.04下OLSR协议安装教程

    OLSR是根据MANET的要求,在传统的LS(Link state)协议的基础上优化的. OLSR中的关键概念是多点转播(MPRs),MPRs是在广播洪泛的过程中挑选的转发广播的节点.传统的链路状态协 ...

  3. css面试题总结(转)

    转自此网页http://www.cnblogs.com/YangqinCao/p/5721810.html. 1.两栏布局,左边栏宽度固定,适应父元素高度变化 首先分析两栏布局, 两栏布局两种常见方法 ...

  4. vagrant up提示"Couldn't open file /path/to/base"的错误解决方法

    在vagrant使用命令vagrant up启动虚拟机时 出错: C:\Vagrant>vagrant up Bringing machine 'default' up with 'virtua ...

  5. 杨柳目-杨柳科-Info-新闻:杨柳絮造成的危害相关视频资讯

    ylbtech-杨柳目-杨柳科-Info-新闻:杨柳絮造成的危害相关视频资讯 1. 杨絮返回顶部 1.   2. https://www.baidu.com/sf/vsearch?pd=video&a ...

  6. Linux终端常用命令(一)

    基本操作 展示全部的环境变量 export 搜索可执行文件.源文件 whereis ls 在环境变量中搜索可执行文件,并打印完整路径 which ls 展示用户命令,系统调用.库函数等 whatis ...

  7. TZOJ 4359: Partition the beans (二分)

    描述 Given an N x N square grid (2 <= N <= 15) and each grid has some beans in it. You want to w ...

  8. mysql原来是按自然日统计。怎么可以用今天10点到次日10点这样统计???

    关于网友提出的" mysql原来是按自然日统计.怎么可以用今天10点到次日10点这样统计???"问题疑问,本网通过在网上对" mysql原来是按自然日统计.怎么可以用今天 ...

  9. oracle函数 to_single_byte(c1)

    [功能]将字符串中的全角转化为半角 [参数]c1,字符型 [返回]字符串 [示例] SQL> select to_multi_byte('高A') text from dual; test -- ...

  10. 云上快速搭建Serverless AI实验室

    Serverless Kubernetes和ACK虚拟节点都已基于ECI提供GPU容器实例功能,让用户在云上低成本快速搭建serverless AI实验室,用户无需维护服务器和GPU基础运行环境,极大 ...