【CodeForces】#296 Div 2 B(简单hash应用)
2015-03-18 17:08
489 查看
题目大意:两个字符串,每个位置不同的话,Hamming distance+1,最后问你最多交换一次的话Hamming
distance变为多少,是交换哪一对的结果。
思路:我是用hash记录下可以交换的那个位置,以及这个位置希望得到什么。
最后通过遍历26个字母,找出交换使得Hamming
distance-1或者-2的那一对,因为只交换一次,所以挺简单的。
distance变为多少,是交换哪一对的结果。
思路:我是用hash记录下可以交换的那个位置,以及这个位置希望得到什么。
最后通过遍历26个字母,找出交换使得Hamming
distance-1或者-2的那一对,因为只交换一次,所以挺简单的。
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAX 200050 struct pos { int i, j; int cnt; }p; struct posx { int next; int x; int need; }ha[MAX]; int head[200]; int cnt; char str1[MAX]; char str2[MAX]; bool flag; bool flag2; void add(int l,int ne,int po) { for (int i = head[l]; i != -1; i = ha[i].next) if (ha[i].need == ne)return; ha[cnt].x = po; ha[cnt].need = ne; ha[cnt].next = head[l]; head[l] = cnt++; } void find(int l) { for (int i = head[l]; i != -1; i = ha[i].next) { if (head[ha[i].need] != -1) { for (int j = head[ha[i].need]; j != -1;j=ha[j].next) if (!flag&&ha[j].need == l) { p.i = min(ha[i].x, ha[j].x); p.j = max(ha[i].x, ha[j].x); p.cnt = 2; flag = true; return; } else { if (!flag2) { p.i = min(ha[i].x, ha[j].x); p.j = max(ha[i].x, ha[j].x); p.cnt = 1; flag2 = true; break; } } } } } int main() { int n; while (~scanf("%d%*c", &n)) { gets(str1); gets(str2); cnt = 0; p.i = -2; p.j = -2; p.cnt = 0; int ans = 0; memset(head, -1, sizeof(head)); flag = false; flag2 = false; for (int i = 0; i < n; i++) { if (str1[i] != str2[i]) { ans++; add(str1[i], str2[i], i); } } for (int i = 'a'; i <= 'z'; i++) { if (flag) break; if (head[i]+1) find(i); } ans -= p.cnt; printf("%d\n%d %d\n", ans, p.i+1, p.j+1); } }
相关文章推荐
- Codeforces 4C Registration system MAP和hash的简单应用
- 简单的弹出层窗口应用(DIV+JS)
- css,div简单应用
- CodeForces 581B Luxurious Houses(简单题)——Codeforces Beta Round #322 (Div. 2)
- hash的简单应用
- html div标签的简单应用
- hash数组的一个简单应用
- [最短路 主席树 Hash] Codeforces 464E #265 (Div. 1) E. The Classic Problem
- 毕业设计(十九)---文章模块管理 div弹出层的应用 简单js操作
- hash数组的一个简单应用
- CF Round#396D (Div. 2)(Codeforces 766D) 简单并查集+map
- 关于js和div的简单应用
- div的简单应用---网页的简单布局
- div应用示例 --简单内容填充
- CodeForces 581A Vasya the Hipster(简单题)——Codeforces Beta Round #322 (Div. 2)
- 符号表(hash)简单应用_索隆难题
- 算法之个人总结:Hash表之简单应用
- 在html中div+css布局的简单应用(适合初学者了解)
- Codeforces 433C #248_div1_A 中位数的应用
- Codeforces 519D A and B and Interesting Substrings (简单hash)