Codeforces Round #658 (Div. 2) C2. Prefix Flip (Hard Version) (构造)
2024-09-02 16:25:04
题意:给你两个长度为\(n\)的01串\(s\)和\(t\),可以选择\(s\)的前几位,取反然后反转,保证\(s\)总能通过不超过\(2n\)的操作得到\(t\),输出变换总数,和每次变换的位置.
题解:我们现将\(s\)串全部变成\(1\)或\(0\),确保\(s[n]=t[n]\),然后我们倒着遍历\(t\),若遇到相邻的两个字符不同,我们就对\(s\)中相应的位置执行一次操作,然后继续遍历,如下图:
代码:
int t;
int n;
char s[N],tmp[N];
vector<int> ans; int main() {
scanf("%d",&t);
while(t--){
scanf("%d",&n);
scanf("%s %s",s+1,tmp+1);
ans.clear();
if(s==tmp){
printf("0\n");
continue;
} for(int i=1;i<n;++i){
if(s[i]!=s[i+1]){
ans.pb(i);
}
}
if(s[n]!=tmp[n]){
ans.pb(n);
}
for(int i=n;i>=2;--i){
if(tmp[i]!=tmp[i-1]){
ans.pb(i-1);
}
}
printf("%d ",ans.size());
for(auto w:ans){
printf("%d ",w);
}
puts("");
} return 0;
}
最新文章
- B树和B+树的区别
- JavaScript代码段整理笔记系列(一)
- idea 如何隐藏/展示不想看到的文件
- XLConnect:一个用R处理Excel文件的高效平台
- 文件读写 swift
- eclipse ADT下载地址
- mysql聚合函数
- 2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO
- [破解] DRM-内容数据版权加密保护技术学习(中):License预发放实现
- Linux下查看使用频率最高的十个命令
- BZOJ_1925_[Sdoi2010]地精部落_递推
- get方法与post方法的区别与js获取url参数的方式
- 又拍云 Node.js 实现文件上传、删除
- 使用 vi/vim 时,粘贴进新创建文件或空文件的首行内容丢失的解决方法
- C++ classes and uniform initialization
- 如何阻止点击scrollviewer里面的单位内容时,自动滚动
- Cannot refer to the non-final local variable user defined in an enclosing scope 内部类定义在方法内,方法定义的参数(形参)无法被内部类直接访问,需要用final定义
- Eclipse导入web项目发布项目时报Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web错误解决方案
- Java语法糖设计
- Linux的进程间通信-文件和文件锁