• 题意:有一个模板串,有\(T\)个字符串,从字符串中找到某个子串,使得这个子串中的子序列包含模板串,求最短的子串的长度.

  • 题解:找子序列,很容易想到序列自动机,根据序列自动机的原理,我们一定可以确保除了第一个字符,其他的字符的位置都是最优的,所以我们先对模板串的第一个字符\(p\)记录它的所有位置,然后再遍历它的位置,每次都跑一下序列自动机维护答案的最小值即可.

  • 代码:

    const string p="puleyaknoi";
    
    int t;
    string s;
    vector<int> v[N];
    vector<int> cnt; int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--){
    cin>>s;
    cnt.clear();
    int len=(int)s.size();
    for(int i=0;i<len;++i){
    int num=s[i]-'0';
    v[num].pb(i);
    }
    for(int i=0;i<len;++i){
    if(s[i]=='p') cnt.pb(i);
    }
    bool flag=false;
    int res=INF;
    for(auto w:cnt){
    int pos=w;
    for(int i=1;i<10;++i){
    int num=p[i]-'0';
    auto now=lower_bound(v[num].begin(),v[num].end(),pos+1);
    if(now==v[num].end()){
    break;
    }
    else pos=*now;
    if(i==9){
    flag=true;
    res=min(res,pos-w+1);
    }
    }
    }
    if(!flag) cout<<-1<<endl;
    else cout<<res<<endl; for(auto w:s){
    int num=w-'0';
    v[num].clear();
    }
    } return 0;
    }

最新文章

  1. 深入C#编程
  2. Xamarin.Android和UWP之MVVM的简单使用(二)
  3. 单例模式(singleton)
  4. (python)对象的引用
  5. 测试架构图 High Level 产品技术(无事来更新,证明这个博客还是Live的)
  6. Codeforces 633C Spy Syndrome 2(DP + Trie树)
  7. Least Common Ancestors 分类: ACM TYPE 2014-10-19 11:24 84人阅读 评论(0) 收藏
  8. vi常用命令与设置(不断修改中)
  9. 【HDOJ】3277 Marriage Match III
  10. java利用反射调用类的某个方法
  11. Android尽量避免使用开发jpg图片
  12. PHP 6:PHP 基本数据类型
  13. 浅谈MySQL集群高可用架构
  14. 【翻译】将Ext JS Grid转换为Excel表格
  15. Java设计模式视频讲解
  16. .NET CORE学习笔记系列(1)——ASP.NET MVC Core 介绍和项目解读
  17. 【Eclipse】-NO.163.Eclipse.1 -【Eclipse springboot 1.x 创建maven工程初始化报错】
  18. django部署笔记
  19. 路由网关---zuul
  20. 使用sshpass方式实现ssh自动登录

热门文章

  1. PAT天梯赛练习 L3-004 肿瘤诊断 (30分) 三维BFS
  2. mongodb表索引备份,索引的导出导入
  3. Centos 6 下安装 OSSEC-2.8.1 (一)
  4. kubernets之secret资源
  5. 7行代码解决P1441砝码称重(附优化过程)
  6. 解决MyBatis-Plus 3.3.1中自动生成代码tinyint(1)无法自动转换为Boolean 的办法
  7. CentOS 7.4通过rpm包离线安装 Mysql8.0并部署主从复制(附从库备份脚本)
  8. 转 12 jmeter性能测试实战--web程序
  9. Mybatis参数预编译
  10. 【LinxuShell】tar命令的用法