1 条题解
-
0
// Problem: 搭乘 IOI 火车 // Contest: Virtual Judge - LibreOJ // URL: https://vjudge.net/problem/LibreOJ-2762#author=GPT_vi // Memory Limit: 256 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.org) # include <bits/stdc++.h> using namespace std; #define int long long int n,m,res,a[2005],b[2005],dp[2005][2005][2]; string s,t; signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; cin >> s >> t; s = '#' + s; t = '#' + t; for (int i = 1; i <= n; i++) { a[i] = (s[i]=='O'); } for (int i = 1; i <= m; i++) { b[i] =(t[i]=='O'); } for (int i = 0; i <= n; i++) for (int j = 0; j <= m; j++) dp[i][j][1]=-1e9; for (int i = 0; i <= n; i++) { for (int j = 0; j <= m; j++) { // dp[i][j][k] la bat dau o vi tri i trong xau s // va vi tri j trong xau t va ky tu tiep theo can la k if (i<n) { dp[i+1][j][1-a[i+1]] = max(dp[i+1][j][1-a[i+1]],dp[i][j][a[i+1]]+1); } if (j < m) { dp[i][j+1][1-b[j+1]] = max(dp[i][j+1][1-b[j+1]],dp[i][j][b[j+1]]+1); } } } for (int i = 0; i <= n; i++) { for (int j = 0; j <= m; j++) { res = max(res,dp[i][j][1]); } } cout <<res; }
- 1
信息
- ID
- 9002
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者