考虑我们直接\(dp\)。

那么需要快速的求出一段是否可以被消掉只剩两端。

我们可以考虑反过来做的。

我们知道如果全为\(abab\)型或者\(aa\)型则无法消掉

那么我们要前缀和,以及遇到\(aa\)则另起一套,否则我们记录最后一段\(abab\)的\(f\)和。

#include <bits/stdc++.h>

#define in read()
#define fi first
#define se second
#define pb push_back
#define rep(i, x, y) for(int i = (x); i <= (y); i++)
#define per(i, x, y) for(int i = (x); i >= (y); i--) using namespace std; using pii = pair < int , int >;
using vec = vector < int >;
using veg = vector < pii >;
using ll = long long; int read() {
int x = 0; bool f = 0; char ch = getchar(); while(!isdigit(ch)) f |= ch == '-',ch = getchar();
while(isdigit(ch)) x = x * 10 + (ch ^ 48),ch = getchar(); return f ? -x : x;
} const int N = 2e5 + 10;
const int mod = 998244353; int a[N], s[N], n, f[N]; bool check(int l, int r) {
if(r > l + 1 && a[l] == a[l + 1]) return 1;
if(r > l + 1 && a[r] == a[r - 1]) return 1;
return 0;
} int pos[N]; int main() {
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
n = in; rep(i, 1, n) a[i] = in;
int l = 1, ts = 0;
rep(i, 1, n) {
if(i == 1) f[i] = 1;
if(a[i] == a[i - 1]) { l = i, ts = 0; f[i] = f[i - 1]; s[i] = (s[i - 1] + f[i]) % mod; continue; }
f[i] = (f[i] + s[i - 1] - s[l - 1]) % mod;
if(i - 3 >= l && a[i] == a[i - 2] && a[i - 1] == a[i - 3]) ts = (ts + f[i - 3]) % mod, f[i] = (f[i] + mod - ts) % mod; else ts = 0;
f[i] = (f[i] + mod) % mod;
s[i] = (s[i - 1] + f[i]) % mod;
cerr << i << " " << l << " " << f[i] << endl;
}
printf("%d\n", f[n]); return 0;
}

ARC128D的更多相关文章

随机推荐

  1. 靶场渗透CH4INRULZ_v1.0.1

    最新文章见我个人博客:点此 靶机环境下载地址:[下载] ova下载下来后直接导入virtualbox即可(https://www.vulnhub.com/entry/ch4inrulz-101,247 ...

  2. ShutdownHook原理

    微信搜索"捉虫大师",点赞.关注是对我最大的鼓励 ShutdownHook介绍 在java程序中,很容易在进程结束时添加一个钩子,即ShutdownHook.通常在程序启动时加入以 ...

  3. UltraSoft - Alpha - Scrum Meeting 5

    Date: Apr q9th, 2020. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM 统筹个人进度,协助推进进度 辅助前后端连接工作 刘zh 前端 完 ...

  4. 【技术博客】在Unity3d中实现烟花效果

    在游戏开发中,我们经常需要用到类似烟花的效果.在Unity3d中,实现烟花效果的方法不止一种,我选用了Unity3d中新添加的粒子特效工具--visual effect graph来进行实现. 实现过 ...

  5. 软件案例分析——VS和VS Code

    软件案例分析--VS和VS Code 项目 内容 这个作业属于哪个课程/ 2020年春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里? 软件案例分析 我在这个课程的目标是? 提高代码水平,熟 ...

  6. kafka-eagle监控界面搭建

    kafka-eagle监控界面搭建 一.背景 二 .mac上安装kafka-eagle 1.安装JDK 2.安装eagle 1.下载eagle 2.解压并配置环境变量 3.启用kafka的JMX 4. ...

  7. 【SDOI2014】数数(补)

    见 AC自动机(补坑了) [SDOI2014] 数数 简要题意:  我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为子串.例如当S={22,333,0233}时 ...

  8. 基于屏幕空间的实时全局光照(Real-time Global Illumination Based On Screen Space)

    目录 Reflective Shadow Maps(RSM) RSM 的重要性采样 RSM 的应用与缺陷 Screen Space Ambient Occulsion(SSAO) SSAO Blur ...

  9. configure: error: invalid variable name: `'

    今天在交叉编译一个编解码库的时候,出现一个莫名其妙的报错,一直找不到原因,后来无意中删除了一个空格,才发现就是这个空格造成的错误. ./configure --host=arm-linux LDFLA ...

  10. reorder-list leetcode C++

    Given a singly linked list L: L 0→L 1→-→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→- You ...