Codeforces Round #296 (Div. 2) - B. Error Correct System(脑洞)
来源:互联网 发布:2016年进出口数据 编辑:程序博客网 时间:2024/06/16 22:37
题目:
http://codeforces.com/contest/527/problem/B
题意:
给出两串n(1 ≤ n ≤ 200 000)个字母的字符串, 求出最多交换一对数, 使得不相同对数变少,求出不相同的对数以及交换的数的位置,若不需交换则输出-1,-1.
思路:
用矩阵记录两个串相同位置不同的字母, 并记录每一个出现的字母的位置. 计算不相同的对数ans.
先枚举一遍字符串, 若f[i][j] == f[j][i] == 1, 则ans -= 2;
否则不相同的字母对中t字母中s串存在, 则交换,且ans--.
AC.
#include <iostream>#include <cstdio>#include <vector>#include <algorithm>#include <cstring>using namespace std;const int maxn = 200005;char s[maxn], t[maxn];bool f[30][30];vector<int> v[30];int n, ans;void solve(){ int a = -1, b = -1; bool ok1 = 0, ok2 = 0; for(int i = 0; i <= 25; ++i) { for(int j = 0; j <= 25; ++j) { if(f[i][j] && f[j][i]) { ans -= 2; for(int k = 0; k < n; ++k) { if(!ok1 && s[k]-'a' == i && t[k]-'a' == j) { a = k+1; ok1 = 1; } if(!ok2 && s[k]-'a' == j && t[k]-'a' == i) { b = k+1; ok2 = 1; } if(ok1 && ok2) { printf("%d\n%d %d\n", ans, a, b); return; } } } } } for(int i = 0; i < n; ++i) { if(s[i] != t[i]) { if(v[t[i]-'a'].size() == 0) continue; ans--; a = i+1; b = v[t[i]-'a'][0]+1; printf("%d\n%d %d\n", ans, a, b); return; } } printf("%d\n%d %d\n", ans, a, b); return;}int main(){//freopen("in", "r", stdin); while(~scanf("%d", &n)) { memset(f, 0, sizeof(f)); scanf("%s%s", s, t); ans = 0; for(int i = 0; i < n; ++i) { if(s[i] != t[i]) { ans++; f[s[i]-'a'][t[i]-'a'] = 1; v[s[i]-'a'].push_back(i); } } solve(); } return 0;}
0 0
- Codeforces Round #296 (Div. 2) - B. Error Correct System(脑洞)
- Codeforces Round #296 (Div. 2) B. Error Correct System
- Codeforces Round #296 (Div. 2) B. Error Correct System
- Codeforces Round #296 (Div. 2B. Error Correct System
- Codeforces Round #296 (Div. 2) B. Error Correct System
- B. Error Correct System (CF Round #296 (Div. 2))
- Codeforces 527B Error Correct System(字符串)
- Codeforces 527 B Error Correct System 字母表
- codeforces 527b Error Correct System
- CodeForces 527B Error Correct System
- Codeforces 527B. Error Correct System【字符串】
- CodeForces 527B - Error Correct System 哈希
- B. Error Correct System
- 527B. Error Correct System【string】
- Codeforces Round #296 (Div. 2) A, B, C, D
- Codeforces Round #296 (Div. 2) A B C D
- Codeforces Round #296 (Div. 2) B C题
- Codeforces Round #296 (Div. 2) B(思维题)
- 常用的东东!
- Oracle 11g 新聚集函数listagg实现列转行
- Python基础06 循环
- Tab Layout(选项卡布局)
- 关于androidUI线程更新与Handler
- Codeforces Round #296 (Div. 2) - B. Error Correct System(脑洞)
- Android中Services之异步IntentService
- flex DataGrid 多选
- H264--1--编码原理以及I帧B帧P帧
- 欢迎使用CSDN-markdown编辑器
- gdb结合coredump定位崩溃进程
- 打手打四大阿斯达阿斯达as
- Hummer TimeSeries DB 中关于RowId 的使用
- IOS 图片上传处理 图片压缩 图片处理