贪心 Codeforces584C Marina and Vasya
2015-11-06 12:57
197 查看
传送门:点击打开链接
题意:给两个串s1和s2,现在要构造一个串s3,使得s3与s1和s2比较,恰好都有t个对应位置的字符不一样
思路:因为长度都为n,t个对应位置的字符不一样,那么就会有n-t个位置的字符是一样的。
那么既然要有n-t个位置字符是一样的,那么如果以前两个字符在某个位置是一样的,那么这个位置肯定要选上,因为这样绝对是最优的
那么先统计出s1和s2两个字符串有多少个位置字符是一样的,记为sum
如果(n - sum) / 2 + sum < m,就说明就算相等的位置全部选上,剩下的位置不足够拟补剩下的
之后的思路就是先选择位置一样的字符,然后再选择其他的就行
题意:给两个串s1和s2,现在要构造一个串s3,使得s3与s1和s2比较,恰好都有t个对应位置的字符不一样
思路:因为长度都为n,t个对应位置的字符不一样,那么就会有n-t个位置的字符是一样的。
那么既然要有n-t个位置字符是一样的,那么如果以前两个字符在某个位置是一样的,那么这个位置肯定要选上,因为这样绝对是最优的
那么先统计出s1和s2两个字符串有多少个位置字符是一样的,记为sum
如果(n - sum) / 2 + sum < m,就说明就算相等的位置全部选上,剩下的位置不足够拟补剩下的
之后的思路就是先选择位置一样的字符,然后再选择其他的就行
#include<map> #include<set> #include<cmath> #include<ctime> #include<stack> #include<queue> #include<cstdio> #include<cctype> #include<string> #include<vector> #include<cstring> #include<iostream> #include<algorithm> #include<functional> #define fuck(x) cout<<"["<<x<<"]" #define FIN freopen("input.txt","r",stdin) #define FOUT freopen("output.txt","w+",stdout) using namespace std; typedef long long LL; typedef pair<int, int>PII; const int MX = 1e5 + 5; char A[MX], B[MX], C[MX]; int main() { int n, m; //FIN; while(~scanf("%d%d", &n, &m)) { memset(C, 0, sizeof(C)); scanf("%s%s", A + 1, B + 1); m = n - m; int sum = 0; for(int i = 1; i <= n; i++) { if(A[i] == B[i]) sum++; } if((n - sum) / 2 + sum < m) { printf("-1\n"); continue; } int k = min(m, sum); for(int i = 1, j = 1; j <= k && i <= n; i++) { if(A[i] == B[i]) C[i] = A[i], j++; } int s = m - k; for(int i = 1, j = 1; j <= s && i <= n; i++) { if(A[i] != B[i] && !C[i]) C[i] = A[i], j++; } for(int i = 1, j = 1; j <= s && i <= n; i++) { if(A[i] != B[i] && !C[i]) C[i] = B[i], j++; } for(int i = 1; i <= n; i++) { if(!C[i]) for(int j = 'a'; j <= 'z'; j++) { if(A[i] != j && B[i] != j){ C[i] = j; break; } } } printf("%s\n", C + 1); } return 0; }
相关文章推荐
- jstack和线程dump分析
- javascript设计模式-装饰着模式
- 探索A@1db9742
- Android Studio 1.3/1.4 无法更新下载Android NDK:install failed please check your network
- 百度搜索软件名称时提供的快速下载的软件可能有病毒或非官方
- 机器学习
- 往前往后推时间(排除工作日和节假日)
- C++ string操作汇总
- 自定义一个抽象类,用来计算圆的面积
- 【paper】KDD15 - Interpreting Advertiser Intent in Sponsored Search
- ————————————————————————2003————————————————————
- ————————————————————————————————————————————2002--------------------------------------------————————————————————
- CSS段落缩进
- POSTGRESQL 存储过程 select into 和 insert into select 两种表复制语句之间的差别
- svn执行上下文错误:由于目标计算机积极拒绝,无法连接 .
- 采用CXF+spring+restful创建一个web接口项目
- -----------------------------------------------------------------------2001——————————————————————————
- 如何解决putty登陆很慢才出现密码输入行
- ---------------------------2000---------------------------------
- java对象为什么要序列化