CF1912K
题意:给定一个长度为 n 的序列,求有多少个子序列满足该子序列内任意相邻 3 个数的和为偶数。
只与奇偶有关,所以可以把状态转化为 01 的。
设 \(f[i][x][y]\) 表示在前 i 个数中,最后一位为 x,倒数第二位为 y 的方案数。
\]
$ w(a[i]) $ 为以 a[i] 结尾的方案数。
\]
最后需要把 \([a[i], y]\) 的对数加入 \(f[i][a[i]][y]\),以此更新下个数。
#include<bits/stdc++.h>
#define rep(i, a, b) for(int i = (a); i <= (b); ++ i)
#define per(i, a, b) for(int i = (a); i >= (b); -- i)
#define pb emplace_back
#define All(X) X.begin(), X.end()
using namespace std;
using ll = long long;
constexpr ll P = 998244353;
int n, f[200005][2][2], cnt[2];
int ans;
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
cin >> n;
rep(i, 1, n) {
int x; cin >> x;
x &= 1;
rep(y, 0, 1) rep(z, 0, 1) if((x + y + z) % 2 == 0) {
f[i][x][y] = (f[i][x][y] + f[i - 1][y][z]) % P;
ans = (ans + f[i - 1][y][z]) % P; // 以 a[i] 结尾的方案的贡献
}
rep(y, 0, 1) rep(z, 0, 1) f[i][y][z] = (f[i][y][z] + f[i - 1][y][z]) % P; // 前缀和为前i个数的方案
rep(y, 0, 1) f[i][x][y] = (f[i][x][y] + cnt[y]) % P; // 统计 [x, y] 二元组的个数,由此更新 i + 1
++ cnt[x];
}
cout << ans;
return 0;
}
随机推荐
- 不用写一行代码!Python最强自动化神器!
1.Playwright介绍 Playwright是一个由Microsoft开发的开源自动化测试工具,它可以用于测试Web应用程序.Playwright支持多种浏览器,包括Chrome.Firefox ...
- 【UE插件DTRabbitMQ】 虚幻引擎蓝图连接RabbitMQ服务器使用插件说明
本插件可以使用蓝图连接 RabbitMQ服务器,并推送或者监听消息. 下载地址地址在文章最后. 1. 节点说明 Create RabbitMQ Client - 创建RabbitMQ客户端对象 创建一 ...
- C# Mat Bitmap互转
var mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(source);//bitmap转mat Cv2.CvtColor(mat, mat, C ...
- Springboot访问html页面
项目结构如图 1.html页面创建 在原有的项目resouces目录下创建static包,并在static下创建pages,然后在pages包下index.html. index.html内容 < ...
- Scala数值类型转换、算数运算符、关系(比较)运算符和逻辑运算符
原则 强制类型转换 Java : int num = (int)2.5Scala : var num : Int = 2.7.toInt 数值类型和String类型之间的转换 (1)基本类型转 Str ...
- DevSecOps 中的漏洞管理(上)
DevSecOps意味着在DevOps交付管道把安全性包含进去.该模型尽可能早地将安全原则集成到软件开发生命周期的所有适用阶段中.下图展示了安全方面在DevOps后期阶段的集成,但DevSecOps安 ...
- Git 12 IDEA上传本地项目到远程
这里以上传 Spring 开源项目到 Gitee 为例: 1.点击 Create Git Repository 2.选择项目目录 3.添加到缓存库 4.提交到本地库 5.复制远程库地址 6.推送到远程 ...
- mupdf实用操作demo,C++操作PDF文件
前文: 最近有个项目,需要读写PDF,本来想着挺简单的,读写PDF有那么多的库可以使用,唰唰的就完成了. 忘记了我写C++的,还是在国产系统上开发的. 所以一般的东西还不好使,因为项目需要在多个架构的 ...
- 第十三篇:HTML和CSS入门
一.HTML本质以及在WEB程序中的作用 1.一套规则,浏览器认识的规则. 2.开发者: 学习html规则 开发后台程序 - 写html文件(充当模板的作用) - 数据库获取数据,然后替换到html文 ...
- 重新整理数据结构与算法(c#)——算法套路普利姆算法[二十九]
前言 看一个题目: 这个问题就是求最小生成树,是图转换为树的一种方式. 最小生成树概念: 最小生成树简称MST. 1.n个顶点,一定有n-1条边 2.包含全部顶点. 3.图转换为最小生成树,权重之和最 ...