LINK:子序列自动机

想了一些很有趣的做法。

dp 容易看出 f[i][j]表示前i个数匹配了j个数的dp 不过复杂度很高。

贪心 容易想到匹配的时候每个数字尽量往前匹配 这样显然是最优的 复杂度Qn.

可以发现 这个贪心显然可以优化 我们无非是要寻找下一个离当前位置最近的一个位置。

动态开点线段树存每个值得位置 查询的时候 先ask一下区间和 然后线段树上二分即可。

容易想到主席树 显然可以倒着建立主席树每次更新某个点的位置 查询的时候可以直接查。

不过需要考虑一下子序列自动机 我们期望建立一个自动机来识别所有的子序列。

可以发现随便连点即可。优化的话也不过就是贪心的优化思路。

再次来到如何贪心的地方 容易发现将位置集合放到vector里然后二分即可。

如果待修呢?平衡树做这个东西就行了。

由于建立这个自动机空间和时间花销过大 我们可以不建立 直接使用算法进行匹配即可。

int n,m,Q,T;
vector<int>g[MAXN];
vector<int>::iterator it;
int main()
{
freopen("1.in","r",stdin);
get(T);get(n);get(Q);get(m);
rep(1,n,i){int get(x);g[x].pb(i);}
rep(1,Q,i)
{
int get(x),flag=0,st=0;
rep(1,x,j)
{
int get(y);
if(flag)continue;
it=lower_bound(g[y].begin(),g[y].end(),st+1);
if(it==g[y].end()){flag=1;continue;}
st=*it;
}
if(!flag)puts("Yes");
else puts("No");
}
return 0;
}

luogu P5826 【模板】子序列自动机 主席树 vector 二分的更多相关文章

  1. [模板] 后缀自动机&&后缀树

    后缀自动机 后缀自动机是一种确定性有限状态自动机, 它可以接收字符串\(s\)的所有后缀. 构造, 性质 翻译自毛子俄罗斯神仙的博客, 讲的很好 后缀自动机详解 - DZYO的博客 - CSDN博客 ...

  2. NOI 2011 阿狸的打字机(AC自动机+主席树)

    题意 https://loj.ac/problem/2444 思路 ​多串匹配,考虑 \(\text{AC}\) 自动机.模拟打字的过程,先建出一棵 \(\text{Trie}\) 树,把它变成自动机 ...

  3. LOJ 3055 「HNOI2019」JOJO—— kmp自动机+主席树

    题目:https://loj.ac/problem/3055 先写了暴力.本来想的是 n<=300 的那个在树上暴力维护好整个字符串, x=1 的那个用主席树维护好字符串和 nxt 数组.但 x ...

  4. [HNOI2019]JOJO(KMP自动机+主席树)

    一道神仙题,考察选手对KMP的深入理解. 先考虑没有2操作的做法.设每一段为一个二元组(x,c),考虑一段前缀匹配后缀,除了第一段的字符,其他段的二元组(x,c)必须相等,所以可以将其视为特殊字符进行 ...

  5. [Luogu P3899] [湖南集训]谈笑风生 (主席树)

    题面 传送门:https://www.luogu.org/problemnew/show/P3899 Solution 你们搞的这道题啊,excited! 这题真的很有意思. 首先,我们可以先理解一下 ...

  6. Bzoj2534:后缀自动机 主席树启发式合并

    国际惯例的题面:考虑我们求解出字符串uvu第一个u的右端点为i,第二个u的右端点为j,我们需要满足什么性质?显然j>i+L,因为我们选择的串不能是空串.另外考虑i和j的最长公共前缀(也就是说其p ...

  7. 【BZOJ-4556】字符串 后缀数组+二分+主席树 / 后缀自动机+线段树合并+二分

    4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 657  Solved: 274[Su ...

  8. luogu P2617 Dynamic Rankings(主席树)

    嘟嘟嘟 一句话题意:带修改区间第\(k\)小. 不修改都会,主席树板子.但是有修改就要比较深入的理解主席树了. 众所周知,主席树中以\(i\)为根的线段树维护的是\([1, i]\)这个前缀的权值,因 ...

  9. [POJ 2104]K-th Number【模板】(主席树)

    题目背景 这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个正整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 输入输 ...

随机推荐

  1. Java贪吃蛇小游戏

    贪吃蛇 思路 首先构思游戏布局,计算合理的坐标系. 绘制静态数据(广告.初始小蛇.提示信息.棋盘) 添加键盘监听事件,改变游戏状态以及小蛇运动方向 添加定时器,让小蛇在一段时间内移动一定的距离 随机产 ...

  2. USACO07 MAR Face The Right Way G

    疫情当下,美帝又开始倒牛奶了,这一幕似曾相识啊~~~ 这个题目非常的应景,又是美国佬的奶牛 [题目地址] [一句话题意] N头牛排成一列1<=N<=5000.每头牛或者向前或者向后. 为了 ...

  3. Python——数据库like模糊查询

    在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%.将在Python中执行的sql语句改为:sql = "SELECT * FROM table_test WHERE va ...

  4. gitlab-ci部署实现持续集成(centos7)

    一.gitlab安装 1. 环境准备 // selinux和 firewall 关闭 $ setenforce 0 $ sed -i "/^SELINUX/s/enforcing/disab ...

  5. __FILE__和__DIR__的用法

    dirname(__FILE__)由两部分组成, __FILE__ 魔术变量和 dirname() 函数.__FILE__是当前脚本的绝对路径,通过 dirname() 函数后,就可以获得脚本所在目录 ...

  6. shell专题(十一):企业真实面试题(重点)

    11.1 京东 问题1:使用Linux命令查询file1中空行所在的行号 答案: [atguigu@hadoop102 datas]$ awk '/^$/{print NR}' sed.txt 问题2 ...

  7. redis(十六):Redis 安装,部署(LINUX环境下)

    第一步:下载安装包 访问https://redis.io/download  到官网进行下载.这里下载最新的4.0版本. 第二步:安装 1.通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压 ...

  8. Spring升级案例之IOC介绍和依赖注入

    Spring升级案例之IOC介绍和依赖注入 一.IOC的概念和作用 1.什么是IOC 控制反转(Inversion of Control, IoC)是一种设计思想,在Java中就是将设计好的对象交给容 ...

  9. bzoj2295【POJ Challenge】我爱你啊*

    bzoj2295[POJ Challenge]我爱你啊 题意: 求一个字符串中有多少个"luvletter"(不包括引号).字符串长度≤100000. 题解: 连kmp都不用…… ...

  10. 开源 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库

    作者:HelloGitHub-*小鱼干 工欲善其事必先利其器,想要玩溜数据库,不妨去试试本文安利的 5 款开源的数据库管理工具.除了流行的 SQL 类数据库--MySQL.PostgreSQL 之外, ...