Codeforces79C

题意:
求s串的最大子串不包含任意b串;

思路:

dp[i]为以i为起点的子串的最长延长距离。

我们可以想到一种情况就是这个 i 是某个子串的起点,子串的长度-1就是最短,

或者这个 前面的长度 +这个i 就是答案。
所以预处理一下,以 i 为起点的最短子串距离就好了,这里利用KMP比较方便。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;const int INF=0x3f3f3f3f;const int N=1e5+10;
int vis[N];
char s[N];
int Next[N],lens,lenp;
int dp[N];  //dp[i]为以i为起点的最长距离。void GetNext(char *str)
{int i=0,j=-1;  int len=strlen(str);Next[0]=-1;while(i<len){if(j==-1||str[i]==str[j])  Next[++i]=++j;  else  j=Next[j];  }
}  void KMP(char *p,int x)
{int i=0,j=0;lenp=strlen(p);while(i<lens&&j<lenp)  {if(j==-1||p[j]==s[i])  {i++;j++;  }  elsej=Next[j];if(j==lenp){vis[i-lenp]=min(vis[i-lenp],lenp);j=Next[j];}}
}int main()
{int n;char b[15];scanf("%s",s);lens=strlen(s);scanf("%d",&n);memset(vis,INF,sizeof(vis));for(int i=1;i<=n;i++){scanf("%s",b);GetNext(b);KMP(b,i);}/*for(int i=0;i<lens;i++)printf("%d\n",vis[i]);puts(""); */int pos=lens;dp[n]=0;for(int i=lens-1;i>=0;i--){dp[i]=min(vis[i]-1,dp[i+1]+1);if(dp[i]>dp[pos]) pos=i;}if(pos==lens){puts("0 0");return 0;}printf("%d %d\n",dp[pos],pos);return 0;
}

转载于:https://www.cnblogs.com/keyboarder-zsq/p/6777367.html

Codeforces Beta Round #71 C【KMP+DP】相关推荐

  1. Codeforces 815C. Karen and Supermarket【树形DP】

    LINK 思路 首先发现依赖关系是一个树形的结构 然后因为直接算花多少钱来统计贡献不是很好 因为数组开不下 那就可以算一个子树里面选多少个的最小代价就可以了 注意统计贡献的时候用优惠券的答案只能在1号 ...

  2. P5404-[CTS2019]重复【KMP,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P5404 题目大意 给出一个字符串SSS,然后求有多少个长度为mmm的串TTT满足.无限多个串TTT拼接起来后能找出 ...

  3. Codeforces Beta Round #51 D. Beautiful numbers 数位dp + 状态优化

    传送门 文章目录 题意: 思路: 题意: 思路: 数位dpdpdp挺经典的一个题辣,有一个很明显的状态就是f[pos][num][lcm]f[pos][num][lcm]f[pos][num][lcm ...

  4. Codeforces Beta Round #14 (Div. 2)【未完结】

    2022.3.8 题单地址:https://codeforces.com/contest/14 目录 A. Letter B. Young Photographer[差分] C. Four Segme ...

  5. Codeforces Beta Round #6 (Div. 2)【未完结】

    2022.3.4 题单地址:https://codeforces.com/contest/6 目录 A. Triangle[枚举] B. President's Office[枚举] C. Alice ...

  6. Codeforces Beta Round #7

    Codeforces Beta Round #7 http://codeforces.com/contest/7 A 水题 1 #include<bits/stdc++.h> 2 usin ...

  7. Codeforces Beta Round #4 (Div. 2 Only)

    Codeforces Beta Round #4 (Div. 2 Only) A 水题 1 #include<bits/stdc++.h> 2 using namespace std; 3 ...

  8. Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂)

    Codeforces Beta Round #17 题目链接:点击我打开题目链接 大概题意: 给你 \(b\),\(n\),\(c\). 让你求:\((b)^{n-1}*(b-1)\%c\). \(2 ...

  9. Codeforces Beta Round #5 B. Center Alignment 模拟题

    B. Center Alignment 题目连接: http://www.codeforces.com/contest/5/problem/B Description Almost every tex ...

最新文章

  1. Java关键字和保留字
  2. uniapp中slot插槽用法
  3. 把数据转换为在内存中Tree(树形结构)。_Linux的中断处理机制 [二] - 数据结构(2)...
  4. LUOGU P2966 [USACO09DEC]牛收费路径Cow Toll Paths
  5. c/c++宏函数的定义与使用(宏定义函数)(macro definition)
  6. mysql5.6 pt-query-digest,分析pt-query-digest输出信息
  7. iOS中UIWebview中网页宽度自适应的问题
  8. linux运维基础篇 unit7
  9. SDH光端机的应用介绍
  10. 数据结构与算法-算法入门-什么是算法-算法的挑战
  11. JUnit单元测试的几个规律总结
  12. python numpy安装步骤-python的numpy模块安装不成功简单解决方法总结
  13. C++构造函数初始化列表与赋值
  14. 计算机网络应用答题卡,计算机软考中高级答题卡填涂注意事项
  15. 桌面图标文字有蓝底怎么办
  16. 当笑神姜涛遇上尼古拉斯赵四,低俗加上恶俗的结果是否就是封杀?
  17. 口袋妖怪金心银魂详细图文攻略(上)及游戏下载
  18. 一文读懂Soul上市:注册用户破亿,上市是福还是祸?
  19. xp 开机画面【欢迎使用】四个字更改方法
  20. java学籍管理系统 课程设计,Java课程设计---学生学籍管理系统

热门文章

  1. 大学四年,因为这8个网站,我成为同学眼中的学霸。
  2. ARP协议详解,ARP协议执行原理、ARP协议如何根据IP地址寻找Mac地址?
  3. ISA频繁断线的原因和解决方法
  4. idea maven工程显示灰色(不亮)
  5. Harbor快速部署到Kubernetes集群及登录问题解决
  6. 虚拟化解决方案 并不仅限于SDN
  7. Spring-IOC
  8. 页面的title为乱码的话需要修改jsp页面pageEncoding=UTF-8
  9. 理解 XML Schema:XML Schema 初步 (I)
  10. esp8266 继电器接线图_esp8266控制继电器问题(通电瞬间继电器吸合断开一次)