Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) C(二分+KMP)
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)的更多相关文章
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题解
Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题目链接:https://codeforces.com/contest/1130 ...
- 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)除完后 ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)
A. Be Positive 题意:给出一个数组 每个树去除以d(d!=0)使得数组中大于0的数 大于ceil(n/2) 求任意d 思路:数据小 直接暴力就完事了 #include<bits/s ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)C. Morse Code
题意:给你n个01字符,每次问你前缀的所有本质不同的子串,由摩斯密码组成的方案数和. 题解:离线处理,把字符建sam,通过topo序来dp计算每个节点表示的子串方案数的和.统计答案时,把n个字符挨个匹 ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)
A - Toy Train 很显然,一个站有多少个糖,那么就要从这个点运多少次.设第i个点有\(a_i\)个糖,那么就要转\(a_i-1\)圈,然后再走一段.很显然最后一段越小越好. 然后枚举起点后, ...
- 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 ...
- Codeforces Round 542 (Div. 2)
layout: post title: Codeforces Round 542 (Div. 2) author: "luowentaoaa" catalog: true tags ...
- Codeforces Round #542 题解
Codeforces Round #542 abstract I决策中的独立性, II联通块染色板子 IIIVoronoi diagram O(N^2 logN) VI环上距离分类讨论加取模,最值中的 ...
- int和integer;Math.round(11.5)和Math.round(-11.5)
int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可 ...
随机推荐
- Ansa 自动加载用户脚本设置
1.在安装路径(×××\AppData\Local\Apps\BETA_CAE_Systems\ansa_v16.0.0\config)找到user_ANSA_TRANSL.py: 打开文本可以发现里 ...
- 关于sql 索引
1.聚集索引一个表只能有一个,而非聚集索引有个表能有多个 2.聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致,其实理解起来非常简单,还是举字典的例子:如果按照拼音查询,那么 ...
- 13行代码实现:Python实时视频采集(附源码)
一.前言 本文是<人脸识别完整项目实战>系列博文第3部分:程序设计篇(Python版),第1节<Python实时视频采集程序设计>,本章内容系统介绍:基于Python+open ...
- 二维码(android)
我们都知道一般的二微码都是以不同形式显示有的是登入,有的是网页,其实二维码只是一个字符串.到这里我们就有一个疑问那二维码是这样判断是网站或者是登入功能的呢? 其实这些判断部分,二维码生成器早就给你完成 ...
- 一本通之 一堆迷宫 (Dungeon Master&走出迷宫&走迷宫)
一本通在线崩溃....... . 有图有真相 这是个三维迷宫,其实和二位迷宫差不多,只是方向多加了2个. 但这个题的输入十分恶心,一度被坑的用cin.ignore(),但还是不过... 它的正确输入方 ...
- @Async异步注解与SpringBoot结合使用
当你在service层需要启动异步线程去执行某些分支任务,又不希望显式使用Thread等线程相关类,只想专注于实现业务逻辑代码开发,可以使用@Async异步注解. 1. 使用@Async 异步注解 C ...
- PAT 乙级 1044 火星数字 (20 分)
1044 火星数字 (20 分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, j ...
- Nestjs学习进度-180420
# 一.已完成:# 1.将NPM降级到4.6.1,保证Nest环境正常: 2.成功运行了示例程序:https://docs.nestjs.cn/4.6/firststeps 3.粗略看了下文档. # ...
- pip install pytest on Mac (EI Capitan 10.11.6)
升级了Mac 系统后发现用pip安装pytest出现下面链接中的问题,解决方法是在install时候加上--user选项: 1. 切到home directory: cd - 2. install p ...
- 【perl】企业微信发消息
https://open.work.weixin.qq.com/api/doc#90000/90135/90236 #!/usr/bin/env perl use strict; use warnin ...