本篇博客只是留个辣鸡的自己标记一下,误入的同学请出门左转博客

https://blog.csdn.net/loy_184548/article/details/50865777

代码神马的也是复制啊

#include <bits/stdc++.h>
#define mst(a) memset(a,0,sizeof (a))
#define FOR(i,n) for (int i = 0; i < n; i++)
#define INF 1e9
#define mod 1000000007
#define eps 1e-10
using namespace std; typedef long long ll;
int n;
string s;
int lcp[][];
int dp[][]; //前i长度,最后一个数长度为j的方法数
int sum[][];
void getLcp() //最长公共前缀lcp
{
for (int i = n; i > ; i--)
{
for (int j = n; j > i; j--)
{
if (s[i] == s[j]) lcp[i][j] = lcp[i + ][j + ] + ;
else lcp[i][j] = ;
}
}
}
bool check(int a,int b)
{
char ret1 = s[a+lcp[a][b]];
char ret2 = s[b+lcp[a][b]];
if (ret1 < ret2) return true; //满足条件返回1
else return false;
}
void solve()
{
for (int i = ; i <= n; i++) sum[][i] = ; //初始化
for (int i = ; i <= n; i++)
{
for (int j = ; j <= i; j++)
{
/*在前面基础上加上一段j长度*/
int len = i - j + ; //j串的开头位置
if (s[len] == '') continue; //处理前缀0 /*1.处理前面最后一段比j短的情况(即数字一定比j小)*/
dp[i][j] = sum[len - ][j - ]; //sum[i][j]表示前i长度,最后一个长度为小于j的方法总数 /*2.处理前面最后一段和j相等的情况*/
int tmp = len - j;
if (tmp < ) continue; //前面总长度没有j长
if (check(tmp,len) && lcp[tmp][len] < j) //判断j这段是否满足条件
{
dp[i][j] = (dp[i][j] + dp[len - ][j]) % mod;
}
}
for (int j = ; j <= n; j++)
{
sum[i][j] = (sum[i][j - ] + dp[i][j]) % mod;
}
}
}
int main(){
cin >> n >> s;
s = " " + s;
/*求出最长公共前缀lcp,用于快速比较两个数的大小
如果lcp[a][b] >= len,说明两个数字相等
否则比较s[a+lcp[a][b]]和s[b+lcp[a][b]]即可
*/
getLcp(); //最长公共前缀lcp
solve();
ll ans = ;
for (int i = ; i <= n; i++)
{
ans = (ans + dp[n][i]) % mod;
}
cout << ans << endl;
return ;
}

CF611D lcp+dp的更多相关文章

  1. Codeforces 822E Liar dp + SA (看题解)

    Liar 刚开始感觉只要开个dp[ i ][ j ][ 0 / 1 ]表示处理了s的前 i 个用了 k 段, i 是否是最后一段的最后一个字符 的 t串最长匹配长度, 然后wa24, 就gg了.感觉这 ...

  2. Codeforces_825

    A.连续1的个数,0用来分割,注意连续的0. #include<bits/stdc++.h> using namespace std; int n; string s; int main( ...

  3. CF1073G Yet Another LCP Problem 后缀自动机 + 虚树 + 树形DP

    题目描述 记 $lcp(i,j)$ 表示 $i$ 表示 $i$ 这个后缀和 $j$ 这个后缀的最长公共后缀长度给定一个字符串,每次询问的时候给出两个正整数集合 $A$ 和 $B$,求$\sum_{i\ ...

  4. 树形DP+RMQ+单调队列(Bob’s Race HDU4123)

    题意:有n个房子,这些房子被n-1条道路连接,有一些运动员从一个房子为起点尽可能跑最远的距离且不能通过一条道路超过两次,这些运行员不能选择同样的起点,这些运动员跑的最远距离和最近距离的差值不能超过Q, ...

  5. 来自多校的一个题——数位DP+卡位

    n<=1e9就要考虑倍增.矩阵乘法这种了 假设L=0 考虑枚举二进制下,所有X与R的LCP长度,前len高位 对于第len+1位,假设R的这一位是1 如果一个x的这一位是0了,那么后面可以随便填 ...

  6. 【做题】ECFinal2018 J - Philosophical … Balance——dp

    原文链接 https://www.cnblogs.com/cly-none/p/ECFINAL2018J.html 题意:给出一个长度为\(n\)的字符串\(s\),要求给\(s\)的每个后缀\(s[ ...

  7. Codeforces Round #422 (Div. 2)E. Liar sa+st表+dp

    题意:给你两个串s,p,问你把s分开顺序不变,能不能用最多k段合成p. 题解:dp[i][j]表示s到了前i项,用了j段的最多能合成p的前缀是哪里,那么转移就是两种,\(dp[i+1][j]=dp[i ...

  8. Educational Codeforces Round 53 (Rated for Div. 2)G. Yet Another LCP Problem

    题意:给串s,每次询问k个数a,l个数b,问a和b作为后缀的lcp的综合 题解:和bzoj3879类似,反向sam日神仙...lcp就是fail树上的lca.把点抠出来建虚树,然后在上面dp即可.(感 ...

  9. BZOJ.4199.[NOI2015]品酒大会(后缀自动机 树形DP)

    BZOJ 洛谷 后缀数组做法. 洛谷上SAM比SA慢...BZOJ SAM却能快近一倍... 只考虑求极长相同子串,即所有后缀之间的LCP. 而后缀的LCP在后缀树的LCA处.同差异这道题,在每个点处 ...

随机推荐

  1. kafka实战kerberos

    more /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log a ...

  2. 3.20 总结 java程序流程控制

  3. python Socket socketserver

    Socket 套接字 socket的 类型 实现socket对象时传入 到socket 类中 socket.AF_INET 服务器间的通讯 IPv4 socket.AF_INET6 IPv6 sock ...

  4. 理解IO、NIO、 AIO

    转载:https://baijiahao.baidu.com/s?id=1586112410163034993&wfr=spider&for=pc nio 同步: 自己亲自出马持银行卡 ...

  5. Spring Security(三十三):10.3 Password Encoding

    Spring Security’s PasswordEncoder interface is used to support the use of passwords which are encode ...

  6. 极光推送JAVA代码示例

    一. 准备工作 1. 登录极光推送官网https://www.jpush.cn/,注册账号并登录 2. 创建应用 创建应用过程,详见百度经验:http://jingyan.baidu.com/arti ...

  7. BZOJ1000-1099板刷计划+一句话题解 73/100

    1000-1009 1000A+B Problem 这个还要写??? 1001 狼抓兔子 平面图最小割转化为对偶图最短路 #include<bits/stdc++.h> #define i ...

  8. Spring AOP前置通知实例说明AOP相关概念

    今天又看了下韩顺平的SpringAOP的讲解,讲解的很透彻.仿照视频自己使用下前置通知. 一.引出问题 有个接口TestServiceInter,有两个实现方法TestService和Test2Ser ...

  9. PowerShell-自定义函数(五)-参数互斥:ParameterSetName

    转自:https://blog.51cto.com/38088444/1920978 这一篇我们来讲一下参数的互斥,何谓参数互斥呢.用九胖风格的话说就是互怼,有我没你,有你没我. 例如我们为一个Pin ...

  10. React项目搭建与部署

    React项目搭建与部署 一,介绍与需求 1.1,介绍 1.1.1,React简介 React 是一个用于构建用户界面的 JAVASCRIPT 库. React主要用于构建UI,很多人认为 React ...