Codeforces 1215C. Swap Letters
2024-10-07 04:15:39
好像是个挺显然的贪心
首先每次交换当然要尽量一次交换就多两个相同的位置
即
优先把 $\begin{bmatrix}a\\ b\end{bmatrix}$ 和 $\begin{bmatrix}a\\ b\end{bmatrix}$ 交换
优先把 $\begin{bmatrix}b\\ a\end{bmatrix}$ 和 $\begin{bmatrix}b\\ a\end{bmatrix}$ 交换
最后如果剩下$\begin{bmatrix}a\\ b\end{bmatrix}$,$\begin{bmatrix}b\\ a\end{bmatrix}$ 各一个
我们才只好用两次交换次数把它们搞好,这样就是最优的了
当然如果最后某一种情况剩下一个,另一种情况却没了
那就无解了,具体维护看代码吧
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=4e5+;
int n,pa,pb;
char A[N],B[N];
vector <int> ans[];
int main()
{
n=read(); scanf("%s",A+); scanf("%s",B+);
for(int i=;i<=n;i++)
{
if(A[i]==B[i]) continue;
if(A[i]=='a')
{
if(!pa) pa=i;
else ans[].push_back(pa),ans[].push_back(i),pa=;
}
else
{
if(!pb) pb=i;
else ans[].push_back(pb),ans[].push_back(i),pb=;
}
}
if((pa&&!pb)||(!pa&&pb)) { printf("-1\n"); return ; }
if(pa&&pb) { ans[].push_back(pa); ans[].push_back(pa); ans[].push_back(pa); ans[].push_back(pb); }
int len=ans[].size();
printf("%d\n",len);
for(int i=;i<len;i++) printf("%d %d\n",ans[][i],ans[][i]);
return ;
}
最新文章
- Lua BehaviourTree 各节点说明
- 8、需求分析师要阅读的书籍 - IT软件人员书籍系列文章
- javascript对象初读
- Linux下安装Python pip
- jquery.validate详解二
- SSM搭配中的web.xml的配置信息
- iPhone5s 等 64位真机 运行 带有百度地图等 仅支持32位系统API和SDK的问题
- Android组件生命周期(一)
- C++测试利器--google test开源测试框架
- webpack打包处理html、css、js、img、scss文件
- js时间相关
- Elegance and familiarity are orthogonal.
- mysql名词解释
- 团队作业第六次——团队Github实战训练
- C++学习(二十四)(C语言部分)之 结构体1
- ICAO 附件十四面课件分享
- OpenCV——积分图计算
- webbrowser 静音(刷新、点击网页的声音)(包括flash静音)
- Zabbix日常监控之lvs监控
- jstl 处理字符串函数 substring spli等
热门文章
- 不错的图表库:ChartDirector
- 工具类-ApplicationContextUtil
- maven-profile多环境配置
- scrollWidth、clientWidth、offsetWidth、width的区别
- maven的依赖传递及冲突
- “fatal error: hdf5.h: 没有那个文件或目录”解决方法
- c#使用SharpZipLib对二进制数据进行压缩和解压
- redis high available solution/ redis 高可用方案
- P1070道路游戏题解
- shell初级-----处理用户输入