2019 徐州网络赛 M Longest subsequence t
对于答案来说,一定是
- 前 i-1 个字符和 t的前 i 个一样,然后第 i 个字符比 t的 大 \(i\in [1,m]\)
- 前缀为t,然后长度比t长
对于第一种情况,枚举这个 i ,然后找最小的 p 可以使得从\(s[1\sim p]\) 中产生\(t_1t_2\cdots t_{i-1}\) ,然后在\(s[p+1,n]\)中找最左边的比\(t[i]\) 大的字符,假如 找到了\(s[pos]\),那么后面的\(s[pos+1,n]\) 都可以加到答案后面(因为\(s[pos] > t[i]\) 已经保证答案大于t了)
对于第二种,根据求第一种的方法,不难求出
如何找最小的p?预处理一个\(sf[i][c]\) 数组,表示\(s[i]\) 后面第一个字符\(c\)在哪里即可
如何找pos? 也是用预处理的数组循环最多26次即可
复杂度\(O(n*26)\)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int sf[N][26];
char s[N],t[N];
int n,m;
int main(){
scanf("%d%d",&n,&m);
scanf("%s%s",s+1,t+1);
for(int i=0;i<26;i++)sf[n][i] = n+1;
for(int i=n-1;i>=0;i--){
memcpy(sf[i],sf[i+1],sizeof sf[i]);
sf[i][s[i+1]-'a'] = i+1;
}
int p = 0,res = -1;
for(int i=1;i<=m;i++){
int pos = n+1;
for(int j=t[i]-'a'+1;j<26;j++){
pos = min(pos,sf[p][j]);//找到最近的那个s[pos] > t[i];
}
if(pos != n+1)
res = max(res,i+n-pos);//(n-pos)为后面还可以加的长度
p = sf[p][t[i]-'a'];
if(p == n+1)break;
}
if(p < n)
res = max(res,n-p+m);
printf("%d\n",res);
return 0;
}
2019 徐州网络赛 M Longest subsequence t的更多相关文章
- ICPC 2019 徐州网络赛
ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才 ...
- 2019徐州网络赛 I J M
I. query 比赛时候没有预处理因子疯狂t,其实预处理出来因子是\(O(nlog(n))\)级别的 每个数和他的因子是一对偏序关系,因此询问转化为(l,r)区间每个数的因子在区间(l,r)的个数 ...
- query 2019徐州网络赛(树状数组)
query \[ Time Limit: 2000 ms \quad Memory Limit: 262144 kB \] 题意 补题才发现比赛的时候读了一个假题意.... 给出长度为 \(n\) 的 ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 XKC's basketball team
XKC , the captain of the basketball team , is directing a train of nn team members. He makes all mem ...
- 2019徐州网络赛 H.function
题意: 先有\(n=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}\),定义\(f(n)=k_1+k_2+\cdots+k_m\). 现在计算 \[ \sum_{i=1}^nf( ...
- 【树状数组】2019徐州网络赛 query
(2)首先成倍数对的数量是nlogn级别的,考虑每一对[xL,xR](下标的位置,xL < xR)会对那些询问做出贡献,如果qL <= xL && qR >= xR, ...
- 2019徐州网络赛H :function (min25筛)
题意:f(i)=i的幂次之和. 求(N+1-i)*f(i)之和. 思路:可以推论得对于一个素数p^k,其贡献是ans=(N+1)[N/(P^k)]+P^k(1+2+3...N/(P^k)); 我们分两 ...
- [2019徐州网络赛J题]Random Access Iterator
题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率.son[x]为x节点的儿子节点个数. 又又又又没做出来,心态崩了. 下来看了官方题解后发觉自己大体思 ...
- 2019徐州网络赛 I.query
这题挺有意思哈!!!看别人写的博客,感觉瞬间就懂了. 这道题大概题意就是,给一串序列,我们要查找到l-r区间内,满足min(a[ i ],a[ j ]) = gcd(a[ i ],a[ j ]) 其实 ...
随机推荐
- 本地jar添加到本地仓库 本地jar依赖无效问题
最近工作发生了一个很奇怪的事情,我在本地写了一个项目,打包成jar,然后敲命令mvn install:install-file -DgroupId=com.yzwine -DartifactId=yz ...
- wmic 查看主板信息
查看主板信息的一个命令:wmic baseboard get 当然在命令提示符里查看,真的很费劲,所以我们将命令格式化一下:wmic baseboard get /format:HFORM >c ...
- Core3.1 微信v3 JSAPI支付
1.前言 "小魏呀,这个微信支付还要多久?","快了快了老板,就等着最后一步了...","搞快点哈,就等着上线呢","...... ...
- [Usaco2010 Hol]cowpol 奶牛政坛
题目描述: 农夫约翰的奶牛住在N (2 <= N <= 200,000)片不同的草地上,标号为1到N.恰好有N-1条单位长度的双向道路,用各种各样的方法连接这些草地.而且从每片草地出发都可 ...
- Python执行程序实可视化_heartrate
最近发现了一个Python程序执行的简单实时可视化神器,名字叫 heartrate,安装完运行可以看到下面这样的炫酷过程. 虽然很炫酷,但有点看不懂. 来解释下,左边的动态数字代表每行被触发的次数.变 ...
- ROS教程(二):创建工作空间(图文)
ros教程:创建工作空间 目录 前言 一.工作空间? 二.创建一个工作空间 1.创建目录 2.编译 前言 使用catkin创建一个工作空间 一.工作空间? 在ROS系统下,我们所有的项目都放在一个工作 ...
- 树莓派做私有云盘-极简版(owncloud)
这里直接给出配置好私有云的镜像,只需烧录镜像后微改配置后即可使用 链接:https://pan.baidu.com/s/1EOQaSQso-0wmnuWgZKknZg提取码:q26h 1.直接将此镜像 ...
- Java并发组件一之CountDownLatch
使用场景: 一个或N个线程,等待其它线程完成某项操作之后才能继续往下执行.CountDownLatch描述的是,一个或N个线程等待其他线程的关系. 使用方法: 设CountDownLatch个数:Co ...
- It is thread-safe and idempotent, but not reentrant.
https://github.com/django/django/blob/master/django/apps/registry.py
- sql 括号
<select id="chlTransQueryByChlType" parameterType="map" resultType="java ...