【dfs】【模拟】【树】I Like Matrix Forever!

I Like Matrix Forever!

题目大意:

有一个01矩阵,有一些操作:反转一个位置的数,反转一行的数,反转一列的数,回到第i次操作,每一次操作还要输出1的个数

原题:

题目描述

对一个 n ∗ m 的零矩阵 A 进行 q 次操作:
• 1 i j:将 Ai,j 取反;
• 2 i:将矩阵 A 第 i 行的所有元素全部取反;
• 3 j:将矩阵 A 第 j 列的所有元素全部取反;
• 4 k:将矩阵 A 还原为第 k 次操作之后的状态。
进行每一次操作之后,询问当前矩阵所有元素的和。

输入

第一行包含三个整数 n,m 和 q。
之后 q 行每行包含两个或三个整数,表示一次操作的所有参数。

输出

共 q 行每行包含一个整数 ans,表示当前矩阵所有元素的和。

输入样例

2 2 4
2 1
1 1 2
4 1
3 2

输出样例

2
1
2
2

说明

对于 30% 的数据:n, m ≤ 300,q ≤ 1000
对于 60% 的数据:n, m ≤ 1000,q ≤ 5000
对于 100% 的数据:n, m ≤ 1000,q ≤ 100000

解题思路:

实际上可以把它看作一棵树,每一次操作为一个节点,操作四为一个分支,然后每次返回是再翻一遍
然后模拟即可

代码:

#include<cstdio>
using namespace std;
int n,m,q,w,sum,l[100005],x[100005],y[100005],head[100005],ans[100005],a[1005][1005];
struct rec
{int to,next;
}e[100005];
int read()//快读
{char xx=getchar();int d=1,ll=0;while (xx<'0'||xx>'9') {if (xx=='-') d=-1; xx=getchar();}while (xx>='0'&&xx<='9') ll=(ll<<3)+(ll<<1)+xx-48,xx=getchar();return ll*d;
}
void writ(int c) {if (c>9) writ(c/10); putchar(c%10+48); return;}
void write(int s) {s<0?putchar(45),writ(-s):writ(s); return;}
void lj(int xx,int yy)//连接
{e[++w].to=yy;e[w].next=head[xx];head[xx]=w;
}
void dfs(int dep)//深搜
{if (l[dep]==1)//模拟{sum+=1-(a[x[dep]][y[dep]]<<1);//答案随这个数改变而改变a[x[dep]][y[dep]]^=1;//取反}if (l[dep]==2){for (int i=1;i<=m;++i){sum+=1-(a[x[dep]][i]<<1);a[x[dep]][i]^=1;}}if (l[dep]==3){for (int i=1;i<=n;++i){sum+=1-(a[i][x[dep]]<<1);a[i][x[dep]]^=1;}}ans[dep]=sum;for (int i=head[dep];i;i=e[i].next) dfs(e[i].to);//深搜if (l[dep]==1)//翻回来{sum+=1-(a[x[dep]][y[dep]]<<1);a[x[dep]][y[dep]]^=1;}if (l[dep]==2){for (int i=1;i<=m;++i){sum+=1-(a[x[dep]][i]<<1);a[x[dep]][i]^=1;}}if (l[dep]==3){for (int i=1;i<=n;++i){sum+=1-(a[i][x[dep]]<<1);a[i][x[dep]]^=1;}}return;
}
int main()
{n=read();m=read();q=read();for (int i=1;i<=q;++i){l[i]=read();x[i]=read();if (l[i]==1) y[i]=read();if (l[i]^4) lj(i-1,i);//分支else lj(x[i],i);}dfs(0);for (int i=1;i<=q;++i) write(ans[i]),putchar(10);//输出
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Full_of_Boys训练4总结

题目来源&#xff1a;2017-2018 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2017) A.Cakey McCakeFace #include <bits/stdc.h> #define pb(x) push_back(x) typedef long long ll; const int maxn 20007; using namespace std; int n,m; ll …

.NET Core开发日志——Runtime IDentifier

.NET Core对于传统.NET开发人员而言是既熟悉又陌生的新平台&#xff0c;所以有时遇上出乎意料的事情也纯属正常情况。这时只需点耐心&#xff0c;多查查资料&#xff0c;努力找到原因&#xff0c;也未尝不是件有意义的体验。比如当建完一个最简单的控制台应用程序&#xff1a;d…

P3723-[AH2017/HNOI2017]礼物【FFT】

正题 题目链接:https://www.luogu.com.cn/problem/P3723 题目大意 两个长度为nnn的序列xxx和yyy&#xff0c;可以旋转序列xxx之后让一个序列的所有数加上一个非负整数ccc。 要求最小化∑i1n(xi−yi)2\sum_{i1}^n(x_i-y_i)^2i1∑n​(xi​−yi​)2 解题思路 其实就是要求最小…

初一模拟赛总结(5.11)

成绩&#xff1a; rank是有算其他dalaodalaodalao的 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4T5T5T5333lyflyflyf420420420100100100100100100100100100100100100202020444hkyhkyhky400400400100100100100100100100100100100100100000444fyfyfy40040…

Full_of_Boys训练5总结

题目来源&#xff1a;2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest A. Advertising Strategy 贪心方法&#xff1a;把一部分k放到初始值&#xff0c;剩下一部分&#xff0c;等到最后用。然后&#xff0c;枚举第一部分放多少即可。 #include <bits/stdc.h> typ…

C#语法——await与async的正确打开方式

C#5.0推出了新语法&#xff0c;await与async&#xff0c;但相信大家还是很少使用它们。关于await与async有很多文章讲解&#xff0c;但有没有这样一种感觉&#xff0c;你看完后&#xff0c;总感觉这东西很不错&#xff0c;但用的时候&#xff0c;总是想不起来&#xff0c;或者不…

jzoj1753-锻炼身体【单调队列】

正题 题目大意 n∗mn*mn∗m的有障碍物的网格&#xff0c;开始在(xs,ys)(x_s,y_s)(xs​,ys​)。有kkk段时间网格会倾斜&#xff0c;对于倾斜的方向可以选择移动或者不移动&#xff0c;求最长移动距离。 解题思路 因为每段时间方向唯一&#xff0c;所以我们对于每一列或每一行分…

【并查集】打击犯罪(ssl 2342)

打击犯罪 ssl 2342 题目大意&#xff1a; 有n个人某些人之间有连接&#xff08;连接成一个团伙&#xff09;&#xff0c;现在要最大的团伙人数不大于n/2&#xff0c;要最少要删掉几个人&#xff08;要按顺序删&#xff09; 原题&#xff1a; 题目描述&#xff1a; 某个地…

Full_of_Boys训练6总结

题目来源&#xff1a;2014-2015 ACM-ICPC, Asia Xian Regional Contest F. Color 第一道二项式反演。。膜题解: https://www.cnblogs.com/wmrv587/p/6681953.html #include<bits/stdc.h> typedef long long ll; const ll mod 1e9 7; using namespace std; ll q_pow(ll …

好代码是管出来的——.Net Core集成测试与数据驱动测试

软件的单元测试关注是的软件最小可执行单元是否能够正常执行&#xff0c;但是软件是由一个个最小执行单元组成的集合体&#xff0c;单元与单元之间存在着种种依赖或联系&#xff0c;所以在软件开发时仅仅确保最小单元的正确往往是不够的&#xff0c;为了保证软件能够正确运行&a…

Full_of_Boys训练7总结

题目来源&#xff1a;2016沈阳区域赛 C.Recursive sequence 矩阵快速幂&#xff0c;思路来自oldz #include <bits/stdc.h> typedef unsigned long long ll; const ll mod2147493647; using namespace std; ll A[7][7]{{1,0,0,0,0,0,0},{1,1,0,0,0,0,0},{1,2,1,0,0,0,0},{…

CF961G-Partitions【斯特林数】

正题 题目链接:https://www.luogu.com.cn/problem/CF961G 题目大意 nnn个物品分成kkk个组&#xff0c;每个物品权值为wiw_iwi​。一个子集SSS的权值为∣S∣∑x∈Swx|S|\sum_{x\in S}w_x∣S∣∑x∈S​wx​。 求所有划分方法的权值和。 解题思路 考虑对于每个数wiw_iwi​的贡献…

【高精】【快速幂】穿越丛林(ssl 2314)

穿越丛林 ssl 2314 题目大意&#xff1a; 求2n2^n2n 原题&#xff1a; 题目描述&#xff1a; ljj 是一位富有冒险心又很喜欢研究数学的孩纸&#xff0c;有一天&#xff0c;他到一个丛林冒险&#xff0c;这里的树长有像0、4、6、8、9这样形状的洞&#xff0c;他要想穿过丛…

谈谈surging引擎的tcp、http、ws协议和如何容器化部署

1、前言分布式已经成为了当前最热门的话题&#xff0c;分布式框架也百花齐放&#xff0c;群雄逐鹿。从中心化服务治理框架&#xff0c;到去中心化分布式服务框架&#xff0c;再到分布式微服务引擎&#xff0c;这都是通过技术不断积累改进而形成的结果。esb,网关&#xff0c;ngi…

2018陕西省赛K题[watermelon_planting]

题意:有一个序列a[]&#xff0c;描述的是另一个序列ans[]每个位置单位时间的增量。每个单位时间每个位置都会增加一个单位对应增量。时间总长m&#xff0c;每个单位时间包含有两种操作中的一个&#xff1a;1.询问ans[]在[l,r]区间的和&#xff1b;2.修改&#xff1a;a[]在[l,r]…

【并查集】银河英雄传说 (luogu 1196/ssl 1225)

银河英雄传说 luogu 1196 ssl 1225 题目大意&#xff1a; 有n列船&#xff0c;每列一开始有一艘船&#xff0c;可以将某一艘船所在的列所有船接到另外一列&#xff0c;然后会问某两艘船是否在一列&#xff0c;如果在那中间有多少艘船 原题&#xff1a; 题目描述 公元五八…

P4827-[国家集训队]Crash 的文明世界【树形dp,换根法,斯特林数】

正题 题目链接:https://www.luogu.com.cn/problem/P4827 题目大意 一颗nnn个点的树&#xff0c;定义dis(i,j)dis(i,j)dis(i,j)表示树上i,ji,ji,j两点的距离&#xff0c;对于每个iii求∑j1ndis(i,j)m\sum_{j1}^ndis(i,j)^mj1∑n​dis(i,j)m 解题思路 根据斯特林数的性质我们有…

Helm - Kubernetes服务编排的利器

Helm介绍在Kubernetes中部署容器云应用&#xff08;容器或微服务编排&#xff09;是一项有挑战性的工作&#xff0c;Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过Helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用。同时&#xff0c;也…

【DP】优美三角剖分

优美三角剖分 题目大意&#xff1a; 有一个图形&#xff0c;通过组合可以变成新的图形&#xff0c;现在要求第n个图形 原题&#xff1a; 题目描述 小X同学为了搞好和小C同学的关系&#xff0c;特意寻找了一些优美的图像作为礼物。 这是一些由无穷无尽三角形组成的极为优美…

Loj#114-k大异或和【线性基】

正题 题目链接:https://loj.ac/problem/114 题目大意 nnn个数&#xff0c;求所有非空子集的kkk小异或和。 解题思路 我们考虑处理一下线性基&#xff0c;我们知道对于did_idi​是一定在第iii位为111。 对于一个i>ji>ji>j且did_idi​的第jjj位为111时&#xff0c;我…