CSPS模拟 87
考场上思考量不可减少
否则分数秒变弟弟,考后秒变弱智
T1
二分答案。打的稍恶心
T2
线段树维护“如果我在这个点开枪,前方点的贡献有多大”
想明白了就很好理解了
另外已经飞过去八千里的鸟还输入进来干吗?
T3
暴搜:在有意义的范围内,已知(i,j)可行
若a[i+1]==b[j+1],则(i+1,j+1)可行
若a[i+1]!=b[j+1],则(i+1,j)(i,j+1)可行
在暴搜的基础上打表考虑
还考虑个毛线啊然后两位AK王就打了个表猜了个规律就AC了这道题啊
以A串上的点为基准考虑
如果操作序列和A串完全匹配,那么将取到A串上位置在B串能取到的最左位置
如果和B完全匹配,则取到最右位置
那么把左右端点之间的长度的$\sum$就是答案了,秒过样例,AC!

然后完全过不去对拍
仔细观察(打表)发现,可行区间中间有零星的不可行位置
再观察,发现这些位置两侧的字母在A,B两串中恰好逆序(考场上没打表没能说服自己,学习skyh大神做法)
不可行==逆序?
充分性:假设两个字母逆序(AB BA)而且存在使两个指针分别指向这两个位置的方案
考虑最后一次操作,是A呢?还是B呢?
是A,那BA的指针就向后移动了,是B,AB的指针就跑了
所以字母逆序充分不可行。
必要性:从暴力的过程考虑。把(i,j)看成一个01矩阵,0表示不可行,1表示可行
(i,j)不可行,也即从未有(i-1,j)(i,j-1)(i-1,j-1)向它转移过来。
那么两种情况,要么(i-1,j)(i,j-1)(i-1,j-1)本来就不可行,
要么转移条件不符合,a[i-1]!=b[j-1]&&a[i]==b[j-1]&&a[i-1]==b[j]
考虑到“字母逆序”可表示为:a[i-1]!=b[j-1]&&a[i]==b[j-1]&&a[i-1]==b[j]
形式相同,那么只需充分说明转移条件不符合就可以了
尝试证明状态原本一定全部可行,即可证明转移条件不符合。
由于a[i-1]!=b[j-1],则(i-1,j-1)可以转移到(i,j-1)(i-1,j)
只要(i-1,j-1)可行即可,不可行怎么办,反正一定存在k使(i-k,j-k)可行
这是由于不可行状态是位于可行状态之间(因为讨论的是可行状态间零星的不可行状态)
(可以理解成那个01矩阵中,一条长长的0把左下角和源点(0,0)或(1,1)阻隔开,左下的状态全都无法被转移到,全是0,不在讨论范围内)
所以考虑从左上到右下这串0的 左上角的0,显然满足a[i-1]!=b[j-1]&&a[i]==b[j-1]&&a[i-1]==b[j]
从而a[i]!=b[j]
从而满足a[i]!=b[j]&&a[i+1]==b[j]&&a[i]==b[j+1]
从而a[i+1]!=b[j+1]
从而链式递推下去,所有0全部满足a[i-1]!=b[j-1]&&a[i]==b[j-1]&&a[i-1]==b[j]
所以0的产生原因都是因为转移条件不符合,也即必须满足字母逆序的要求。
所以直接处理6种字母逆序的数量就行了
为什么不是9种
因为在可到达的范围内有相同的字母相邻的话,你可以在A串上还未进入此串相同字符前不断操作此字符,让B指针跳到期望位置的前一个,此时再让A指针移动即可达到目的。
感谢skyh教我做人。
CSPS模拟 87的更多相关文章
- csp-s模拟测试87
csp-s模拟测试87 考场状态还可以$T1$我当时以为我秒切,$T2$确认自己思路不对后毅然决然码上,$T3$暴力挂了太可惜了. 03:01:28 03:16:07 03:11:38 140 03: ...
- CSPS模拟86-87
模拟86 T1,烧水,按位统计贡献,利用某种sao操作避免数位dp #include<iostream> #include<cstdio> #include<cstrin ...
- 反省——关于csp-s模拟50
本人于搜索csp-s模拟49题解时,有意识地点开了一篇关于csp-s模拟50T2的题解,并知道了题解是二维前缀和以及四维偏序. 更重要的是,那篇博客说有解法二,叫二维莫队. 于是我上网搜索二维莫队,结 ...
- csp-s模拟测试99
csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...
- csp-s模拟测试98
csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...
- csp-s模拟测试97
csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...
- csp-s模拟测试96
csp-s模拟测试96 $T1$一眼慢速乘,$T2$稍证一手最优性尝试用神奇数据结构优化,无果,弃.$T3$暴力+信仰. 100 03:16:38 95 03:16:56 35 03:17:10 23 ...
- csp-s模拟测试95
csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...
- csp-s模拟测试94
csp-s模拟测试94 一场简单题,打爆了.$T1$脑抽分解质因数准备分子分母消,想了半天发现$jb$互质直接上天,果断码了高精滚蛋.$T2$无脑手玩大样例,突然灵光一闪想到映射到前$K$大小的区间, ...
随机推荐
- MySql自定义函数-关于保留小数位的特殊需求
背景 昨天,关于价格详情接口又来了一个小需求,而且有点特别.价格显示:改为保留两位小数,没错,就是保留两位小数.大家是不是想说这没啥特别的...数据库都有函数搞定了.例如四舍五入的ROUND(x,d) ...
- python程序调用C/C++代码
这篇用来记录在些模拟Canoe生成CAN数据桢工具时遇到的问题, 生成CAN数据桢,主要分为两个关注点: 1.如何从can信号名获取到can信号的ID长度以及信号的起始位,并将信号值按照一定的规则填写 ...
- GUI tkinter (Menu)菜单项篇
"""添加顶层菜单:1.我们可以使用Menu类来新建一个菜单,Menu和其他的组件一样,第一个是parent,这里通常可以为窗口2.然后我们可以用add_command方 ...
- SD卡学习笔记
最近调试了SD卡,遇到了一些小问题,记录一下,分享一下. 1. SD卡 卡槽旁边的一个小开关 我们平时见过的SD卡都是小的SD卡,可以放在手机上的.现在大多数的开发板上也是小的SD卡的卡槽,插入 ...
- Node.js新手必须知道的4个JavaScript概念
如果只需要知道一种编程语言就可以构建一个全栈的应用程序,是不是特别了不起?Ryan Dahl为了把这个想法成为现实,创造了node.js.Node.js是建立在Chrome强劲的V8 JavaScri ...
- Java学习笔记之基础语法(顺序,条件,循环语句)
顺序结构:自上而下 条件分支选择结构: if条件语句 1,一旦某一个分支确定执行以后,其他分支就不会执行.if后面的条件必须是boolean类型 2,if 后面如果不加大括号,默认相邻的下一 ...
- Python之装饰器(二)
以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行时间是多少,这时候你可以修改之前代码为它加上计时的功能,但是这样的话是不是还要大体读读 ...
- 利用WinRM实现内网无文件攻击反弹shell
利用WinRM实现内网无文件攻击反弹shell 原文转自:https://www.freebuf.com/column/212749.html 前言 WinRM是Windows Remote Mana ...
- opencv实践::切边
问题描述 真实案例,扫描仪扫描到的法律文件,需要切边,去掉边 缘空白,这样看上去才真实. #include <opencv2/opencv.hpp> #include <iostre ...
- 9.Linux用户管理(下)
1. 为用户添加密码 [root才能执行] 1为新用户添加密码{只能是root} {密码尽可能的复杂} [0-9][a-Z][a-Z] [!@#$%^&]* [root@yinwucheng ...