题目链接

题目大意:

给你两个字符串只有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 不要在一个地方死磕
*/

Complementary XOR的更多相关文章

  1. CodeTON Round 3 (C.差分维护,D.容斥原理)

    C. Complementary XOR 题目大意: 给你两个01串ab,问你是否可以通过一下两种操作在不超过n+5次的前提下将两个串都变为0,同时需要输出可以的操作方案 选择一个区间[l,r] 将串 ...

  2. [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字

    Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...

  3. 二分+DP+Trie HDOJ 5715 XOR 游戏

    题目链接 XOR 游戏 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  4. BZOJ 2115 【Wc2011】 Xor

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  5. xor和gates的专杀脚本

    前段时间的一次样本,需要给出专杀,应急中遇到的是linux中比较常见的两个家族gates和xor. 首先是xor的专杀脚本,xor样本查杀的时候需要注意的是样本的主进程和子进程相互保护(详见之前的xo ...

  6. Codeforces617 E . XOR and Favorite Number(莫队算法)

    XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...

  7. Xor && 线性基练习

    #include <cstdio> #include <cstring> ; ; int cnt,Ans,b,x,n; inline int Max(int x,int y) ...

  8. BC之Claris and XOR

    http://acm.hdu.edu.cn/showproblem.php?pid=5661 Claris and XOR Time Limit: 2000/1000 MS (Java/Others) ...

  9. 异或链表(XOR linked list)

    异或链表(Xor Linked List)也是一种链式存储结构,它可以降低空间复杂度达到和双向链表一样目的,任何一个节点可以方便的访问它的前驱节点和后继结点.可以参阅wiki 普通的双向链表 clas ...

  10. hdu 5661 Claris and XOR

    Claris and XOR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

随机推荐

  1. django_day08_项目相关

    django_day08_项目相关 定义数据库表 from django.db import models # Create your models here. class User(models.M ...

  2. 04_Django-模板变量/标签/过滤器/继承-url反向解析

    04_Django-模板变量/标签/过滤器/继承-url反向解析 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn ...

  3. KingbaseES R6 集群repmgr.conf参数'recovery'测试案例(三)

    案例三:测试'recovery = manual' 1.查看集群节点状态信息: [kingbase@node1 bin]$ ./repmgr cluster show ID | Name | Role ...

  4. plpgsql 编译执行

    Oracle 的存储过程或函数提供了两种执行方式: 解释执行:将源代码逐条转换成目标代码,解释一条,执行一条的过程.PLPGSQL将语句翻译成中间形式的系统代码,并在运行时进行解释. 编译执行:将源代 ...

  5. Windows 2012 R2 计划任务发送邮件

     这两天把域控制器升级到了2012 R2,忽然发现原本用的系统自动发邮件提示用户账户锁定的计划任务配置起来有点麻烦了.原因是微软把自动发送邮件和提示消息的功能从计划任务中去除了. 首先用wevtu ...

  6. 常用的清理 Kubernetes 集群资源命令

    1. Kubernetes 基础对象清理 清理 Evicted 状态的 Pod kubectl get pods --all-namespaces -o wide | grep Evicted | a ...

  7. Keepalived设置master故障恢复后不重新抢回VIP

    (1).master配置 ! Configuration File for keepalived global_defs { router_id lb01 } vrrp_script check_ng ...

  8. 容器监控工具WeaveScope初步安装,了解

    Weave Scope是Docker和Kubernetes的可视化和监视工具.它提供了自上而下的应用程序视图以及整个基础架构视图,并允许您实时诊断将分布式容器化应用程序部署到云提供商时遇到的任何问题. ...

  9. MySql的InnoDB的三层B+树可以存储两千万左右条数据的计算逻辑

    总结/朱季谦 B+树是一种在非叶子节点存放排序好的索引而在叶子节点存放数据的数据结构,值得注意的是,在叶子节点中,存储的并非只是一行表数据,而是以页为单位存储,一个页可以包含多行表记录.非叶子节点存放 ...

  10. Qemu/Limbo/KVM镜像:Ubuntu Mate 22.04+Wine 7.8

    链接: https://pan.baidu.com/s/1cf2c_ylu7-SUaYl8ddztog 提取码: b9mi 密码 空格 手机推荐使用termux里面的Qemu运行,速度最快. 镜像特征 ...