atcoder abc215E
2021/10/25 6:11:39
本文主要是介绍atcoder abc215E,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
https://atcoder.jp/contests/abc215/tasks/abc215_e
题意:
求连续相同的子序列个数,比如aaabbb算一种
思路:
考虑题目中一共只有10中字符,可以通过状压dp求解,状态表示为:dp[i][j][k],表示前i个字母中选取状态为k,并且结尾使j的所有子序列的个数,显然这样可以不重不漏表示所有的情况,
考虑转移,到第i个字符c时,一共有两种选择方式,1.要么加上当前字符串,2.或者不加当前字符,添加字符c时又有两种情况,一种是上一层就是字符c,另一种是上一层是其它字符串;
1.(1).dp[i][k][j]=dp[i-1][k][j]*2 (c=k)
1.(2).dp[i][k][j|1<<k]+=dp[i-1][k][j] (c!=k and j>>c&1=0)
2.dp[i][k][j]=dp[i-1][k][j] (c!=k)
同时每个状态也要保证合法,当枚举到字符k结尾时,要确保j>>k&1,即当前选择了k
题解:
#include <bits/stdc++.h> #define eb emplace_back #define divUp(a,b) (a+b-1)/b #define mkp(x,y) make_pair(x,y) #define all(v) begin(v),end(v) #define int long long #define deb(x) cout<<#x<<" "<<x<<endl; using namespace std; typedef unsigned long long ull; typedef pair<int, int> pii; bool checkP2(int n) {return n > 0 and (n & (n - 1)) == 0;}; template<typename... T> void read(T&... args) { ((cin >> args), ...); } template<typename... T> void put(T... args) { ((cout << args), ...); } const int N = 1 << 10, mod = 998244353; int dp[N][11][N]; void solve() { int n; string s; read(n, s); for (int i = 1; i <= n; i++) { int c = s[i - 1] - 'A'; for (int j = 0; j < 1 << 10; j++) { for (int k = 0; k < 10; k++) { if ((j >> k) & 1) { dp[i][k][j] = dp[i - 1][k][j] % mod; if (k == c) { dp[i][k][j] = (dp[i - 1][k][j] * 2) % mod; } } } } for (int j = 0; j < 1 << 10; j++) { if (j >> c & 1) continue; for (int k = 0; k < 10; k++) { if ((j >> k) & 1) { dp[i][c][j | (1 << c)] += dp[i - 1][k][j]; dp[i][c][j | (1 << c)] %= mod; } } } dp[i][c][1 << c]++; dp[i][c][1 << c] %= mod; } int res = 0; for (int i = 0; i < 1 << 10; i++) { for (int j = 0; j < 10; j++) { if ((i >> j) & 1) { res += dp[n][j][i]; res %= mod; } } } put(res % mod, '\n'); } //dp[i][k][j]=dp[i-1][k][j]+... signed main() { ios::sync_with_stdio(false); cin.tie(0); // int _; cin >> _; while (_--) solve(); return 0; }
这篇关于atcoder abc215E的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用