Educational Codeforces Round 34 (Rated for Div. 2) E. Swapping Characters(暴力)
来源:互联网 发布:学霸君答疑知乎 编辑:程序博客网 时间:2024/06/06 07:28
题目链接:http://codeforces.com/contest/903/problem/E
被这个题关了一天啊?
明显是个爆爆爆,因为最多允许有四个不同的位置,我们就暴力枚举交换就好了,我们要标记不同位置最多的那个串和当前串有多少位置不相同。然后暴力枚举就好了。
论爆爆爆姿势的重要性?
代码:
#include<bits/stdc++.h>using namespace std;const int MAXN=2505;string sv[MAXN];int cnt[30];int k,n;void getdiff(const string &a,const string &b,vector<int> &diff){for(int i=0;i<n;i++){if(a[i]!=b[i])diff.push_back(i);}}int getdiff(const string &a,const string &b){int ret=0;for(int i=0;i<n;i++){if(a[i]!=b[i])ret++;}return ret;}bool check(const string &res,const string &s){vector<int> diff;for(int i=0;i<n;i++){if(s[i]!=res[i]){diff.push_back(i);}if(diff.size()>2)return false;}if(diff.size()==1)return false;if(diff.size()==2){string tmp=s;swap(tmp[diff[0]],tmp[diff[1]]);if(tmp==res)return true;}if(diff.size()==0){memset(cnt,0,sizeof(cnt));for(int i=0;i<n;i++){cnt[s[i]-'a']++;}for(int i=0;i<=25;i++){if(cnt[i]>=2)return true;}}return false;}int main(){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);scanf("%d%d",&k,&n);for(int i=1;i<=k;i++){cin>>sv[i];}vector<int> diff;int mx=0,id=0;for(int i=2;i<=k;i++){int tot=getdiff(sv[1],sv[i]);if(tot>mx)mx=tot,id=i;if(mx>4)return 0*puts("-1");}if(mx==0){swap(sv[1][0],sv[1][1]);return 0*printf("%s\n",sv[1].c_str());}swap(sv[2],sv[id]);getdiff(sv[1],sv[2],diff);memset(cnt,0,sizeof(cnt));for(int i=0;i<n;i++){cnt[sv[1][i]-'a']++;}for(int i=0;i<=25;i++){if(cnt[i]>=2){bool flag=true;for(int p=2;p<=k;p++){if(!check(sv[1],sv[p])){flag=false;}}if(flag)return 0*printf("%s\n",sv[1].c_str());break;}}for(int i=0;i<diff.size();i++){for(int j=i+1;j<diff.size();j++){bool flag=true;swap(sv[1][diff[i]],sv[1][diff[j]]);for(int p=2;p<=k;p++){if(!check(sv[1],sv[p])){flag=false;}}if(flag)return 0*printf("%s\n",sv[1].c_str());swap(sv[1][diff[i]],sv[1][diff[j]]);}}puts("-1");return 0;}
阅读全文
0 0
- Educational Codeforces Round 34 (Rated for Div. 2) E. Swapping Characters(暴力)
- Educational Codeforces Round 34 E Swapping Characters
- Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays(组合数学)
- Educational Codeforces Round 34 (Rated for Div. 2) D
- Educational Codeforces Round 34 (Rated for Div. 2)
- Educational Codeforces Round 34 (Rated for Div. 2) D
- Educational Codeforces Round 34 (Rated for Div. 2) D
- Educational Codeforces Round 34 (Rated for Div. 2) C
- Educational Codeforces Round 34 (Rated for Div. 2) D
- codeforces Educational Codeforces Round 33 (Rated for Div. 2)
- codeforces Educational Codeforces Round 33 (Rated for Div. 2)B
- Educational Codeforces Round 34 (Rated for Div. 2) D. Almost Difference(高精度)
- Educational Codeforces Round 33 (Rated for Div. 2) C
- Educational Codeforces Round 33 (Rated for Div. 2)
- Educational Codeforces Round 33 (Rated for Div. 2)
- Educational Codeforces Round 33 (Rated for Div. 2) A
- Educational Codeforces Round 33 (Rated for Div. 2) B
- Educational Codeforces Round 33 (Rated for Div. 2) C
- GIT使用笔记
- bash中的一些补漏
- 前端面试题目汇总
- 江湖救急!!!VS2015工程中引用第三方库函数出错:LINK1120 无法解释外部命令
- 备用809
- Educational Codeforces Round 34 (Rated for Div. 2) E. Swapping Characters(暴力)
- C++语法之多态
- 杭电ACM OJ 1043 Eight 八数码 8种方法 花式解决
- 正则表达式
- Idea 简易搭建dubbo+zookeeper分布式框架
- POJ-1469 COURSES(二分图最大匹配)
- 备用twer
- C(n,m);二项式系数公式
- 备用