Educational Codeforces Round 48 (Rated for Div. 2)异或思维
题:https://codeforces.com/contest/1016/problem/D
题意:有一个 n * m 的矩阵, 现在给你 n 个数, 第 i 个数 a[ i ] 代表 i 这一行所有数的抑或和。
再给你 m 个数, 第 i 个数 b[ i ] 代表 i 这一列 所有数的抑或和。
问你是否能 构造出任意一个满足条件的矩阵, 不能输出 NO, 能输出YES 和那个 矩阵。
分析:考虑yes和no的情况,yes当且仅当,行的全部异或和等于列的全部异或和
原因:行的全部异或和x,就是整个数组所有数的异或和,列也同样分析 y,那么显而易见这俩个异或和x==y必须相同,矩阵才能被构造出来。
构造:简单的,就直接把一列数套在一行,另一列套在一列,是最简单的,但是考虑到第一行第一列的交叉位置,那么只要处理好这个交叉位置,那么就可以按照这种简单方法构造
考虑第一列,这一列除了第一个位置的异或和为x^a[i],那么要达到这一列异或和==b[i],那么这个位置只能是x^a[i]^b[i],由于x==y那么恰好对于考虑行的情况也是一样的道理
#include<bits/stdc++.h>
using namespace std;
const int M=;
int mp[M][M];
int a[M],b[M];
int main(){
int n,m;
scanf("%d%d",&n,&m);
int x=,y=;
for(int i=;i<=n;i++){
cin>>a[i],x^=a[i];
}
for(int i=;i<=m;i++)
cin>>b[i],y^=b[i];
if(x!=y)
puts("NO");
else{ puts("YES");
x^=a[];
x^=b[];
mp[][]=x;
for(int i=;i<=n;i++)
mp[i][]=a[i];
for(int i=;i<=m;i++)
mp[][i]=b[i];
for(int i=;i<=n;i++){
for(int j=;j<=m;j++)
cout<<mp[i][j]<<" ";
cout<<endl;
}
}
return ;
}
Educational Codeforces Round 48 (Rated for Div. 2)异或思维的更多相关文章
- Educational Codeforces Round 48 (Rated for Div. 2) CD题解
Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...
- Educational Codeforces Round 48 (Rated for Div. 2)
http://codeforces.com/contest/1016 A. 没想到这个也会TLE,太粗心了 B. 暴力就好了,多情况讨论又出错... 思路跟我一样的解法 为什么我做了那么多讨论,原 ...
- Educational Codeforces Round 48 (Rated for Div. 2) B 1016B Segment Occurrences (前缀和)
B. Segment Occurrences time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Educational Codeforces Round 48 (Rated for Div. 2)——A. Death Note ##
A. Death Note time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- Educational Codeforces Round 48 (Rated for Div. 2)G. Appropriate Team
题意:求满足条件的(i,j)对数:\(gcd(v,a_i)=x,lcm(v,a_j)=y\) 题解:\(x|a_i,a_j|y\),\(x|y\),考虑质因子p,假设a_i中p次数为a,x中次数为b, ...
- Educational Codeforces Round 48 (Rated for Div. 2) D 1016D Vasya And The Matrix (构造)
D. Vasya And The Matrix time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- 【Educational Codeforces Round 48 (Rated for Div. 2) C】 Vasya And The Mushrooms
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然在没有一直往右走然后走到头再往上走一格再往左走到头之前. 肯定是一直在蛇形走位.. 这个蛇形走位的答案贡献可以预处理出来.很容易 ...
- 【Educational Codeforces Round 48 (Rated for Div. 2) D】Vasya And The Matrix
[链接] 我是链接,点我呀:) [题意] 告诉你每一行.每一列的异或和. 让你求出一个符合要求的原矩阵. [题解] 显然应该有 a1^a2^....^an = b1^b2^....^bn 也即两边同时 ...
- Educational Codeforces Round 60 (Rated for Div. 2)D(思维,DP,快速幂)
#include <bits/stdc++.h>using namespace std;const long long mod = 1e9+7;unordered_map<long ...
随机推荐
- [极客大挑战 2019]Upload
0x00 知识点 一个常规上传题目,知识点全都来自前几天写的文章: https://www.cnblogs.com/wangtanzhi/p/12243206.html 1:某些情况下绕过后缀名检测: ...
- Java中String类为什么被设计为final?
Java中String类为什么被设计为final 首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...
- SHIDOU
1. arp i 指定网卡 a 查看arp表,显示主机名称和ip n 查看arp表,并且用ip显示而不是主机名称 2. 119 ~/M2/image-installer- ...
- addlayer添加神经网络层
def addlayer(inputs,insize,outsize,activity_function = None): weights = tf.Variable(tf.random_nor ...
- springMVC源码阅读-通过画图理解一个请求生命周期(十二)
- 吴裕雄--天生自然MySQL学习笔记:MySQL 序列使用
MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 使用 AUTO_INCREMENT ...
- 无法安装R程序包
如题,使用insatll.packages("cluster")安装包时,会出现如下错误提示. Warning: unable to access index for reposi ...
- Java 知识点(二)
接<Java 知识点(一)> java的输入输出与 c 语言不同,下面介绍Java的格式: 16.因为Java的输入类Scanner,定义在java.util包中,所以Java需要输入时要 ...
- Linux-线程常见函数
1.线程创建与回收 (1).pthread_create 主线程用来创造子线程 (2).pthread_join 主线程用来等待(阻塞)回收子线程 (3).pthread_detach 主线程用来 ...
- Nginx安全优化
一.隐藏版本号 http { server_tokens off; } 经常会有针对某个版本的nginx安全漏洞出现,隐藏nginx版本号就成了主要的安全优化手段之一,当然最重要的是及时升级修复漏洞. ...