题目链接

题目大意:

给你两个字符串只有01组成,你可以选取区间[l, r],对字符串a在区间里面进行异或操作,对字符串b非区间值进行异或操作,问能否将两个字符串变为全0串。如果可以输出YES, 操作次数, 操作区间。

思路:

将他们全部变成0,等价于将全0变成a, b串。经归纳法可以发现,在进行基数次操作后a,b串每个对应字符都不同,偶数次操作他们每个对应字符都相同。那么我们可以进行的操作方案是将a串上的1全部变为0,如果b[1]=1,那代表b串全部是1,a串全部为0,那么我们可以进行操作(1,1),(1, 2),(2,2)。这样就结束了。

注意:

cout << endl; //速度很慢,不推荐使用
ios :: sync_with_stdio(false);
cin.tie(0);
cout.tie(0); //使用该流解除后将不能使用puts(""), 和scanf(), printf();

AC代码:

#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i <= (k); --i)
#define ll long long
#define sz(a) ((int) (a).size())
#define vi vector< int >
#define me(a, x) memset(a, x, sizeof(a))
#define ull unsigned long long
#define ld __float128 using namespace std; const int N = 1e6 + 7;
int n, m, t;
char s[N], p[N];
int a[N], b[N];
void Main() {
cin >> n;
cin >> (s + 1) >> (p + 1);
for (int i = 1; i <= n; i ++ ) {
a[i] = s[i] - '0';
b[i] = p[i] - '0';
}
for (int i = 1; i <= n; i ++ ) {
b[i] ^= a[i];
if (b[i] != b[1]) {
cout << "NO\n";
return ;
}
}
vector< pair<int, int> > vc;
for (int i = 1; i <= n; i ++ ) {
if (a[i]) {
vc.emplace_back(i, i);
b[1] ^= 1;
}
} if (b[1]) {
vc.emplace_back(1, 1);
vc.emplace_back(1, 2);
vc.emplace_back(2, 2);
}
cout << "YES\n";
cout << sz(vc) << '\n';
for (auto i : vc)
cout << i.first << ' ' << i.second << '\n';
} int main() {
ios :: sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t--) Main();
return 0;
} /* stuff you should look for 你应该寻找的东西
* int overflow, array bounds (int)溢出,数组边界
* special cases (n=1?) 特殊情况(n=1?)
* do smth instead of nothing and stay organized 做一些事情而不是什么也不做,保证效率
* WRITE STUFF DOWN 将东西写下
* DON'T GET STUCK ON ONE APPROACH 不要在一个地方死磕
*/

最新文章

  1. jq使用技巧
  2. JVM-程序编译与代码晚期(运行期)优化
  3. 同步推是如何给未越狱的IOS设备安装任意IPA的?
  4. Android 图标上面添加提醒使用开源UI类库 Viewbadger
  5. Linux 2.4调度系统分析--转
  6. android soundpool 參数说明
  7. 使用Python改写的身份证信息查询小程序
  8. 配置mabatis,报Could not load driverClass ${jdbc.driverClassName}
  9. 【待整理】MySQL alter table modify vs alter table add产生state不一样
  10. Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContextAware
  11. Python对elasticsearch的CRUD
  12. vue-app开发入门
  13. ECMAScript6语法重点(二)
  14. Magical Girl Haze 南京网络赛2018
  15. c#输出指定信息到文本文件中(追加方式)
  16. 2013年JavaScript开发人员调查结果
  17. windowSoftInputMode
  18. SQL 备忘录
  19. AndroidManifest.xml文件详解(uses-permission)
  20. Arm Cache学习总结

热门文章

  1. 安装配置华为Fusion acces(Lite AD)并使Windows登录
  2. C# Parallel类For循环与普通For循环耗时性能比较
  3. Gitea 1.17.2 | 带来视觉提升、完善资源校验、加强安全性等42项优化
  4. python 模块、原始字符串
  5. thinkphp5.1发送邮件的方法
  6. 使用 Elastic 技术栈构建 K8S 全栈监控 -3: 使用 Filebeat 采集 Kubernetes 集群日志
  7. Elasticsearch启动https访问
  8. 获取Docker容器名称和ID
  9. 域名服务DNSmasq搭建
  10. 1_Maven