当前位置: 首页 > news >正文

10.14 NOIP 模拟赛 T1. HappyLovelyEveryday!

思路

不难发现等价于划分序列, 对序列内部做异或和, 求本质不同的最终序列的数量

考虑去重, 子序列计数去重用的是钦定尽量往前匹配
本题中, 对于任意一种最终序列, 我们可以限制每个划分块都必须是最小的, 也就是攒够要的赶紧跑路
也就是若要 \(1\), 就找到后面第一个 \(1\) 划分, 若要 \(0\), 就找直接一个 \(0\) 或者连续两个 \(1\)
然后最后找任意结尾, 加上最后一段算方案数

#include <bits/stdc++.h>
#define int long long
const int MAXN = 2e6 + 20;
const int MOD = 998244353;int add(int x, int y) { return x + y >= MOD ? x + y - MOD : x + y; }int a[MAXN];
int f[MAXN];
int nxt1[MAXN];
std::unordered_set<long long> vis;
signed main() {// freopen("a.in", "r", stdin);// freopen("a.out", "w", stdout);int _; scanf("%lld", &_);while (_--) {std::string astr; std::cin >> astr;int n = astr.size();bool sp = true;for (int i = 1; i <= n; i++) a[i] = astr[i - 1] - '0', sp &= (a[i] == 1);a[n + 1] = 1; a[n + 2] = 1;/*找每个位置后第一个 1*/for (int i = n + 2; i >= 1; i--) {if (a[i]) nxt1[i] = i;else nxt1[i] = nxt1[i + 1];}/*dp*/f[0] = 1;for (int i = 1; i <= n; i++) f[i] = 0;for (int i = 0; i <= n; i++) {if (a[i + 1]) {if (i + 1 <= n) f[i + 1] = add(f[i + 1], f[i]);}else {if (nxt1[i + 1] <= n) f[nxt1[i + 1]] = add(f[nxt1[i + 1]], f[i]);}if (!a[i + 1]) {if (i + 1 <= n) f[i + 1] = add(f[i + 1], f[i]);}else {if (nxt1[nxt1[i + 1] + 1] <= n) f[nxt1[nxt1[i + 1] + 1]] = add(f[nxt1[nxt1[i + 1] + 1]], f[i]);}}int ans = 0;for (int i = 0; i <= n - 1; i++) {ans = add(ans, f[i]);}printf("%lld\n", ans);}return 0;
}

总结

最小构造用于去重还是很牛的

http://www.gsyq.cn/news/21152.html

相关文章:

  • 20251014 杂题
  • SQL在智能自动化业务场景中的应用 - Irving11
  • .net Core资料
  • 日志|二叉树|110平衡二叉树|111二叉树的最大深度|199二叉树的右视图
  • 吾の歌单
  • Qwen多模态系列模型笔记—Qwen2-VL
  • WPF 调用 ChangeWindowMessageFilterEx 修改指定窗口 (UIPI) 消息筛选器的用户界面特权隔离
  • 歌词本。 - Slayer
  • ai出题
  • 从 0 到 1 实现高性能日志库 MiniSpdlog — 这可能是最适合新手的日志系统实战项目 !
  • 思想惰性:警惕时代中的精神惯性
  • journalctl 查看服务日志
  • 对ssh修改源码过程
  • 低代码时代,企业机遇在哪里
  • 从后端转行为AI工程师,转行AI大模型开发,附全套学习资源!收藏这份指南! - 实践
  • 2025秋_11
  • 2025/10/14
  • 【技术解决方案】联邦学习中遇到的Non-IID问题——隐语SecretFlow
  • 题解:P10104 [GDKOI2023 提高组] 异或图
  • P7076 [CSP-S2020] 动物园
  • redis-4.0.11-1.ky10.sw_64.rpm安装教程(申威麒麟V10 64位系统详细步骤)
  • P10067 [CCO 2023] Real Mountains
  • 实用指南:【Lsky-Pro开源图床】Lsky-Pro+cpolar:云端素材库的远程协作方案
  • CF2147E
  • 2025 年液压机厂家推荐榜:伺服/小型/大型/数控/液压机厂家口碑推荐,品质可靠 聚焦智能适配,助力企业高效生产
  • 快速上手!山海鲸 4 种高频数据接入方式
  • 2025高级语言程序设计第一次作业lcr
  • D230809E. 勇敢的阿乐
  • 高级程序语言第一次作业
  • LlamaIndex检索调优实战:分块、HyDE、压缩等8个提效方法快速改善答案质量