考场上思考量不可减少

    否则分数秒变弟弟,考后秒变弱智

    

    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的更多相关文章

  1. csp-s模拟测试87

    csp-s模拟测试87 考场状态还可以$T1$我当时以为我秒切,$T2$确认自己思路不对后毅然决然码上,$T3$暴力挂了太可惜了. 03:01:28 03:16:07 03:11:38 140 03: ...

  2. CSPS模拟86-87

    模拟86 T1,烧水,按位统计贡献,利用某种sao操作避免数位dp #include<iostream> #include<cstdio> #include<cstrin ...

  3. 反省——关于csp-s模拟50

    本人于搜索csp-s模拟49题解时,有意识地点开了一篇关于csp-s模拟50T2的题解,并知道了题解是二维前缀和以及四维偏序. 更重要的是,那篇博客说有解法二,叫二维莫队. 于是我上网搜索二维莫队,结 ...

  4. csp-s模拟测试99

    csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...

  5. csp-s模拟测试98

    csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...

  6. csp-s模拟测试97

    csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...

  7. csp-s模拟测试96

    csp-s模拟测试96 $T1$一眼慢速乘,$T2$稍证一手最优性尝试用神奇数据结构优化,无果,弃.$T3$暴力+信仰. 100 03:16:38 95 03:16:56 35 03:17:10 23 ...

  8. csp-s模拟测试95

    csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...

  9. csp-s模拟测试94

    csp-s模拟测试94 一场简单题,打爆了.$T1$脑抽分解质因数准备分子分母消,想了半天发现$jb$互质直接上天,果断码了高精滚蛋.$T2$无脑手玩大样例,突然灵光一闪想到映射到前$K$大小的区间, ...

随机推荐

  1. Python调用 Openstack 主要服务(keystone,nova,glance,neutron,heat)

    由于Openstack更新很快,现在准备搭建基于Queen版本的Openstack,Queen版本要求keystone版本为V3,所以之前大多数接口都不能用了,百度了一下都没有比较新的实例,官方文档又 ...

  2. 【JAVA基础】JAVA基础语法

    1.1 Java语言概述什么是Java语言Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言. Java语言发展历史1995年Su ...

  3. 推荐一款可以丰富博文GIF免费录制工具——GifCam

    在网上写博文,看别人添加gif图片很好奇,于是尝试制作并传递了一次,确实挺有意思的,于是分享一下. gifcam是一个绿色的,可以录制GIF动图的小软件,十分适合用来录制电脑的各种操作. 在这里附上工 ...

  4. CSS定位机制:浮动 float及清除浮动的常用方法

    CSS的定位机制 1.普通流(标准流) 默认状态,元素自动从左往右,从上往下排列 块元素的特征: 独占一行 可以设置宽高 如果不设置宽度,宽度默认为容器的100% 常见的块元素:div p h1-h6 ...

  5. 算法学习之剑指offer(七)

    题目1 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P% ...

  6. js继承机制的实现

    js继承机制的实现 1. 继承的概念 说明继承的最经典的例子:几何形状.实际上,几何形状只有两种,即椭圆形(是圆形的)和多边形(具有一定数量的边).圆是椭圆的一种,它只有一个焦点.三角形.矩形和五边形 ...

  7. PBO项目的组织

    前言: 最近发现PMI的英文官网已经公布了第五版PMBOK的初稿,针对第四版而言的确有了不少变动.了解这些变动,对理解项目管理知识的整理和发展,以及掌握PMP考试的变化方向都是很重要的.当然,变动尤其 ...

  8. JS循环+循环嵌套+经典例题+图形题

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  9. oracle计算两个时间的差值(XX天XX时XX分XX秒)

    在工作中需要计算两个时间的差值,结束时间 - 开始时间,又不想在js里写function,也不想在java里去计算,干脆就在数据库做了一个函数来计算两个时间的差值.格式为XX天XX时XX分XX秒: 上 ...

  10. Linux常用命令(1)

      常用命令(1)   1.系统相关命令 su 切换用户 hostname 查看主机名 who 查看登录到系统的用户 whoami 确认自己身份 history 查看运行命令的历史 ifconfig ...