http://codeforces.com/contest/1129/problem/C

#include<bits/stdc++.h>
#define fi first
#define se second
#define INF 0x3f3f3f3f
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pqueue priority_queue
#define NEW(a,b) memset(a,b,sizeof(a))
#define lowbit(x) (x&(-x))
#define si(x) scanf("%d",&x)
#define sl(x) scanf("%lld",&x)
#define lc (d<<1)
#define rc (d<<1|1)
const double pi=4.0*atan(1.0);
const double e=exp(1.0);
const int maxn=1e6+;
typedef long long LL;
typedef unsigned long long ULL;
const LL mod=1e9+;
const ULL base=1e7+;
using namespace std;
LL a[maxn],b[maxn],Next[maxn];
LL dp[][];
void get_next(int m){
Next[]=-;
int k=-;
int j=;
while(j<m){
while(k>-&&b[k]!=b[j]){
k=Next[k];
}
if(b[k]==b[j]||k==-){
k++;
}
Next[++j]=k;
}
}
bool kmp(int n,int m){
int k=;
for(int i=n-m+;i<=n;i++){
b[k++]=a[i];
}
get_next(m);
k=;
for(int i=;i<n;i++)
{
while(k>&&b[k]!=a[i]){
k=Next[k];
}
if(b[k]==a[i]){
k++;
}
if(k==m){
return ;
}
}
return ;
}
bool check(int l){
if(a[l]==&&a[l+]==&&a[l+]==&&a[l+]==) return ;
if(a[l]==&&a[l+]==&&a[l+]==&&a[l+]==) return ;
if(a[l]==&&a[l+]==&&a[l+]==&&a[l+]==) return ;
if(a[l]==&&a[l+]==&&a[l+]==&&a[l+]==) return ;
return ;
}
int main(){
int n;
LL sum=;
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d",&a[i]);
if(i==){
dp[][]=;
printf("1\n");
}
else{
int l=,r=i;
int ans=;
while(l<=r){
int mid=(l+r)>>;
if(kmp(i,mid)){
l=mid+;
ans=max(ans,mid);
}
else{
r=mid-;
}
}
dp[i][i]=;
if(i>) dp[i-][i]=;
if(i>) dp[i-][i]=;
if(i>&&check(i-)) dp[i-][i]=;
for(int j=i-;j>=;j--){
dp[j][i]+=dp[j][i-]*dp[i-][i];
dp[j][i]%=mod;
}
for(int j=i-;j>=;j--){
dp[j][i]+=dp[j][i-]*dp[i-][i];
dp[j][i]%=mod;
}
for(int j=i-;j>=;j--){
dp[j][i]+=dp[j][i-]*dp[i-][i];
dp[j][i]%=mod;
}
for(int j=i-;j>=;j--){
dp[j][i]+=dp[j][i-]*dp[i][i];
dp[j][i]%=mod;
}
for(int j=i-ans;j>=;j--){
sum+=dp[j][i];
sum%=mod;
}
printf("%lld\n",sum);
}
}
}

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) C(二分+KMP)的更多相关文章

  1. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题解

    Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题目链接:https://codeforces.com/contest/1130 ...

  2. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) A - D2

    A. Be Positive 链接:http://codeforces.com/contest/1130/problem/A 题意: 给一段序列,这段序列每个数都除一个d(−1e3≤d≤1e3)除完后 ...

  3. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)

    A. Be Positive 题意:给出一个数组 每个树去除以d(d!=0)使得数组中大于0的数 大于ceil(n/2) 求任意d 思路:数据小 直接暴力就完事了 #include<bits/s ...

  4. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)C. Morse Code

    题意:给你n个01字符,每次问你前缀的所有本质不同的子串,由摩斯密码组成的方案数和. 题解:离线处理,把字符建sam,通过topo序来dp计算每个节点表示的子串方案数的和.统计答案时,把n个字符挨个匹 ...

  5. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)

    A - Toy Train 很显然,一个站有多少个糖,那么就要从这个点运多少次.设第i个点有\(a_i\)个糖,那么就要转\(a_i-1\)圈,然后再走一段.很显然最后一段越小越好. 然后枚举起点后, ...

  6. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) 题解

    A. Toy Train 时间限制:2 seconds 内存限制:256 megabytes 题意 有编号111~n(n≤5000)n(n\le 5000)n(n≤5000)的车站顺时针呈环排列,有m ...

  7. Codeforces Round 542 (Div. 2)

    layout: post title: Codeforces Round 542 (Div. 2) author: "luowentaoaa" catalog: true tags ...

  8. Codeforces Round #542 题解

    Codeforces Round #542 abstract I决策中的独立性, II联通块染色板子 IIIVoronoi diagram O(N^2 logN) VI环上距离分类讨论加取模,最值中的 ...

  9. int和integer;Math.round(11.5)和Math.round(-11.5)

    int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可 ...

随机推荐

  1. 7.STM32中GPIO理解

    端口概述 在STM32中,每个I/O端口可以由软件配置成为输入/输出模式.复位期间或刚复位后,I/O端口被配置成浮空输入模式.所有的GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时, 它们可以被激 ...

  2. UC登录功能:商户需要创建的表

    1:类似PHP的hash_hmac DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `uc_session_hmacsha1`( `_secretkey ...

  3. C# Directory.Exists() 文件存在但返回一直为false

    备注:这是一个低级错误,起始真正的原因不是访问权限的问题. 真正的原因是:这个程序要读取远程电脑上共享文件夹里的文件,但是没有远程访问代码,导致找不到相关的目录.所以才报错! 查询一个文件,但程序突然 ...

  4. Centos7之系统优化

    优化条目: 修改ip地址.网关.主机名.DNS等 关闭selinux,清空iptables 添加普通用户并进行sudo授权管理 更新yum源及必要软件安装 定时自动更新服务器时间 精简开机自启动服务 ...

  5. text_CNN笔记

    Text-CNN模型作为文本分类模型,通过验证实验以及业界的共识,在文本分类任务中,CNN模型已经能够取到比较好的结果,虽然在某些数据集上效果可能会比RNN稍差一点,但是CNN模型训练的效率更高.所以 ...

  6. [STM32F103]RTC日历

    使能PWR和BKP时钟: a) RCC_APB1PeriphClockCmd(); 使能后备寄存器访问: a) PWR_BackupAccessCmd(); 配置RTC时钟源,使能RTC时钟: a)  ...

  7. mysql表关联

    mysql的表关联: left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner ...

  8. JAVA正则表达式匹配,替换,查找,切割(转)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  9. uni-app 调用支付宝支付

    本文讲解  uni-app如何调用支付宝进行支付,服务端为 .net编写. 客户端:uni-app 编写  1.根据服务端生成的订单信息发起支付. 服务端:.net 编写 1.生成订单信息.2.接收支 ...

  10. jenkins+maven+git持续集成部署问题总结

    1.这个问题出现在单独构建一个项目的子模块时,很奇怪,构建父项目没有问题. Executing Maven: -N -B -f /root/.jenkins/workspace/newMer/pom. ...