ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF76C - Mutation 题解

2020-11-29 21:06:03  阅读:240  来源: 互联网

标签:字符 删除 题解 差分 CF76C Mutation 集合 代价 高维


这是当年模拟赛的题,当时我不会高维前缀和,被 ymxdd 了/kk

那么这是个 2700 的远古题,那么真实难度到底是高还是低呢/yiw


Portal

首先我们考虑枚举每个删除字符的集合,对于每个集合都算出代价判一下。代价显然分为删除字符后得到的字符串中相邻字符对的总代价,加上删除字符的代价。后者显然随便求就可以了,难点在于前者。

如果想对于每个删除集合,单独算出前者代价,那是没有前途的。我们注意到,在删除一些字符后剩下来的字符串中,我们可以看做每个相邻字符对的左边那个字符对它做了一些贡献。于是我们考虑转换贡献体,换成左边字符,就是说对于每个字符,我们考虑它能作为相邻字符对中的左边字符影响哪些删除集合并贡献上去。

于是我们枚举字符,对于每个字符,考虑它后面能够接哪些字符(或是最后一个,后面不接,或当前字符不存在),对于接不同字符的贡献是不同的。对于它后面接字符 \(x\),那么它在原串中的位置显然是当前枚举到的字符后的第一个 \(x\),中间那些全要删掉,\(x\) 和当前字符必须留下,其他的字符就删不删没关系,这时候贡献是当前字符与 \(x\) 相邻时的代价。那么显然一共有 \(\mathrm O(m)\) 种情况,随便维护一下即可。

那么对于每种情况,它能贡献到的删除集合的集合显然是:那些必须删和那两个必须不删的是固定的,其他 \(0/1\) 均可。这个该如何维护呢?这个范围显然是个 \(m\) 维超立方,考虑高维差分,最后再高维前缀和回去。但是众所周知,高维差分是我所不会 \(\mathrm O(m)\)(或者可能根本就不可做),那怎么办呢?注意到差分中的一个特例,如果某维的 \(r+1\) 要大于值域,那它就不会起效果,可以忽略;在本题中,如果超立方的某维的右端点等于 \(1\) 那就不用给总复杂度乘以 \(2\)。那显然 \(0/1\) 均可和必须删的都是 \(r=1\),只有两个是 \(r=0\),那差分就是常数级别了。注意这两个可能重合,讨论一下即可。

code

标签:字符,删除,题解,差分,CF76C,Mutation,集合,代价,高维
来源: https://www.cnblogs.com/ycx-akioi/p/solution-cf76c.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有