CodeForces

来源:互联网 发布:淘宝达人登录网址 编辑:程序博客网 时间:2024/06/07 08:42

题解:用vis[]a[i][b[i]]记录一下a和b两个错误的字母的位置判断是否有没有vis[b[i]][a[i]]]存在如果有就换过去汉明距离-2肯定是最优的如果没有就查看b串上面是否有位置不与a匹配并且等于a[i]即可

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<set>#include<vector>#include<queue>#include<stack>#include<map>using namespace std;#define rep(a,b) for(int i = a; i <= b; i++)#define dec(a,b) for(int i = a; i >= b; i--)#define root 1,1,n#define ls 2*rt#define rs 2*rt+1#define mid (L+R)/2#define lson ls,L,mid#define rson rs,mid+1,R#define fi first#define se second#define mes(a) memset(a,0,sizeof(a))typedef long long int ll;const int mx = 1e6+5;char a[mx];char b[mx];int vis[300][300];int mark[mx];int main(){int n;memset(vis,-1,sizeof(vis));memset(mark,-1,sizeof(mark));scanf("%d",&n);scanf("%s",a);scanf("%s",b);int sum = 0;for(int i = 0; i < n; i++)if(a[i]!=b[i]){sum++;vis[a[i]][b[i]] = i;mark[a[i]] = i;}int ans = sum;int x = -1,y = -1;for(int i = 0; i < n; i++)if(a[i]!=b[i]){if(vis[b[i]][a[i]]!=-1){printf("%d\n",sum-2);printf("%d %d\n",i+1,vis[b[i]][a[i]]+1);return 0;}else if(mark[b[i]]!=-1){ans = min(ans,sum-1);x = i+1,y = mark[b[i]]+1;}}printf("%d\n",ans);printf("%d %d\n",x,y);return 0;}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 绿谷云溪 溪霞龙门谷景区 溪南镇 奉化溪口旅游景点大全 溪头村 溪头村旅游 溪头村徒步路线图 从化溪头村住宿 从化良口镇溪头村 广州从化溪头村 从化溪头村攻略 溪头村图片 从化溪头村图片 溪头村一日游旅游攻略 从化溪头村旅游攻略 从化溪头村一日游费用 中山畔山酒店 沈溪行陈眠全文阅读 秦惜骆行舟好想被他汐熙溪 什么的溪岸 溪岸景园 中建溪岸澜庭 金地澜菲溪岸装修 香缇溪岸 龙溪香岸 中建溪岸观邸 保定溪岸花语为什么便宜 丽彩溪岸庄园 信达溪岸观邸 南昌香缇溪岸 无锡中建溪岸观邸 金地澜菲溪岸二手房 溪岸图 溪布街 张家界溪布街 张家界溪布街篝火晚会 武陵源溪布街 张家界溪布街客栈 溪布街在哪里 于溪悦 溪木镇