数学【p2117】 小z的矩阵
题目描述-->p2117 小z的矩阵
分析:
题目给定我们一个正方形.
容易想到,正方形是对称的.
推敲一下
如果我们的矩阵是这样的↓ 闭眼瞎敲出来的.
{0}&{1}&{1}&{0}&{1}\\\\
{0}&{1}&{0}&{1}&{0}\\\\
{1}&{0}&{1}&{0}&{1}\\\\
{0}&{1}&{1}&{0}&{0}\\\\
{1}&{1}&{0}&{0}&{1}\\\\
\end{bmatrix}\]
题目给定我们的计算公式为a[i][j]×a[j][i]的和。
对于这个栗子.
按照式子来的话我们这么算
a[1][1]*a[1][1]+a[1][2]*a[2][1]+a[1][3]*
a[3][1]+a[1][4]*a[4][1]+a[1][5]*a[5][1]+
a[2][1]*a[1][2]+a[2][2]*a[2][2]+.......
..............+a[5][5]*a[5][5]
虽然不是手算,但摧残一个计算机你真的忍心嘛emmm
很容易地发现(一点也不容易
a[i][j]*a[j][i]与a[j][i]*a[i][j]的值相同.
如果为1,那么他们加和就是2,%2就变成0.
如果为0,那么他们加和依旧为0,%2依旧为0.
对答案没有贡献!
但是
在我们的对角线上的元素是对答案的贡献是它的平方.
因此我们需要记录对角线上的元素对答案的贡献.
即 除了对角线上的元素,其他位置都没有贡献.
因此我们可以只记录对角线上的元素的答案.
对于翻转操作,我们很容易发现
每一行每一列均对应地控制一个对角线上的元素.
如何统计我们的答案?
按照上面的例子来看,那答案就是1.
如果翻转的话,我们会改变某一位置上的元素的值.
即0->1,1->0
假如,我们改变地是第5行.那我们最后一个元素得到的就是0.
此时答案为0.
如果我们再去翻转其他行/列,我们得到的答案一定是1.
以此类推,我们发现,只要有翻转操作,我们的答案一定会改变.即从0->1,1->0.
所以我们可以定义变量ans,如果有翻转操作,就将它^=1
-----------------关于^操作.------------------
01=0,11=0.
观察到它的性质,我们就知道如何记录答案了!
(或者你可以!一下
关于^操作,网上有不少讲解,在这里就不展开了.
(懒
------------------代码---------------------
#include<bits/stdc++.h>
#define IL inline
#define RI register int
IL void in(int &x)
{
int f=1;x=0;char s=getchar();
while(s>'9' or s<'0'){if(s=='-')f=-1;s=getchar();}
while(s>='0' and s<='9'){x=x*10+s-'0';s=getchar();}
x*=f;
}
int n,Q,ans;
int main(void)
{
in(n);in(Q);
for(RI i=1;i<=n;i++)
for(RI j=1,c;j<=n;j++)
if(i==j)
in(c),(ans+=c)%=2;
else
in(c);//非对角线上的元素对答案没有贡献,我们只读入.
for(RI i=1,opt,x;i<=Q;i++)
{
in(opt);
if(opt==3)
printf("%d",ans);
else in(x),ans^=1;
}
}
数学【p2117】 小z的矩阵的更多相关文章
- 洛谷——P2117 小Z的矩阵
P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...
- 洛谷 P2117 小Z的矩阵
P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...
- 洛谷—— P2117 小Z的矩阵
https://www.luogu.org/problemnew/show/2117 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1 ...
- P2117 小Z的矩阵
题意: 给你一个初始01矩阵 三种操作 1.给一个x,把第x行01互换 2.给一个x,把第x列01互换 3.求$(\sum_{i=1}^n\sum_{j=1}^nf[i][j]*f[j][i])%2$ ...
- luogu P2117 小Z的矩阵(结论题)
题意 题解 这题有点水. 我们发现对答案有贡献的实际上只有左上到右下的对角线上的数. 因为不在这条对角线上的乘积都要计算两遍,然后%2就都没了... 然后就做完了. #include<iostr ...
- 【贪心】【P2117】小Z的矩阵
传送门 Description 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1, 当然询问一个矩阵的G值实在是太简单了.小Z在给出一个N*N矩 ...
- 洛谷 题解 P2117 【小Z的矩阵】
这题这么无聊,亏我还用了读入输出优化... 关键在于,这还是道黄题QWQ 掀桌而起 (╯‵□′)╯︵┻━┻ 显而易见,在i != j的情况下,a[i][j] + a[j][i]和a[j][i] + a ...
- 【BZOJ4031】小Z的房间(矩阵树定理)
[BZOJ4031]小Z的房间(矩阵树定理) 题面 BZOJ 洛谷 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子 ...
- bzoj 4031: 小Z的房间 矩阵树定理
bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...
随机推荐
- java中封装的概念
封装(Encapsulation)是类的三大特性之一, 就是将类的状态信息隐藏在类的内部,不允许外部程序直接访问, 而是通过该类提供的方法来实现对隐藏信息的操作和访问. 简而言之,就是隐藏内部实现,提 ...
- 每天一个Linux命令(2):shutdown命令
shutdown命令是系统关机命令.shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作. 语法 shutdown(选项)(参数) 选项 -c:取消已经在进行的 shutdo ...
- python 3 使用cmp函数报错
python3 中已经不使用cmp函数进行比较大小,使用operator模块 import operator lt(a,b) 相当于 a<b 从第一个数字或字母(ASCII)比大小 le(a,b ...
- [译]9-spring bean的生命周期
spring中bean的生命周期比较容易理解.bean在实例化之后有时需要调用某个初始化方法进行一些初始化的工作.同样的 ,当bean在销毁之前有时需要做一些资源回收的工作. 尽管bean在实例化和销 ...
- 孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第四天.今天的感觉是,mongoDB数据 ...
- vue实现数据的增删改查
在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的用户列表里,我们可以录入新用户的信息,也可以对既有的用户信息进行修改.在vue中,我们更应该专注 ...
- PhpStorm快捷键设置/个性化设置,如何多项目共存?如何更换主题?
#常用快捷键 设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“Eclipse” -> 然后“Copy”一份 ...
- win10&hyper上装Ubuntu出现没有找到dev fd0, sector 0 错误
win10 hyper装 ubuntu blk_update_request:I/O error,dev sr0,sector0 错误 配置好安装重启后出现 blk_update_request: I ...
- C#程序怎么写,效率高
文章:改善C#程序,提高程序运行效率的50种方法 文章:编写高效率的C#代码
- BZOJ4001 [TJOI2015]概率论 【生成函数】
题目链接 BZOJ4001 题解 Miskcoo 太神了,orz #include<algorithm> #include<iostream> #include<cstr ...