CF 631B 题解
注意到每次只染色一行或者一列,那么我们最后输出第i行第j列的数字是多少的时候只需要看一下最后一次i行和第j行被染了什么颜色,所以我们需要对每一行和一列记录最后一次染色的颜色。
但是我们也需要比较是行比列后染色还是列比行后染色,所以我们还需要记录一下每行每列染色的最后时间。
然后模拟即可
- #include <cstdio>
- #include <iostream>
- using namespace std;
- int x[],y[],z[];
- int line[],cnt1,row[],cnt2;
- int bo1[],bo2[];
- int a[][];
- int main() {
- freopen("matrix.in","r",stdin);
- freopen("matrix.out","w",stdout);
- int n,m,q;
- scanf("%d%d%d",&n,&m,&q);
- for(register int i=;i<=q;i++){
- scanf("%d%d%d",&x[i],&y[i],&z[i]);
- }
- for(register int i=q;i>=;i--){
- if(x[i]==){
- if(bo2[y[i]]==){
- row[++cnt2]=i;
- bo2[y[i]]=;
- }
- }
- if(x[i]==){
- if(bo1[y[i]]==){
- line[++cnt1]=i;
- bo1[y[i]]=;
- }
- }
- }
- register int l1=cnt1,l2=cnt2;
- while(l1>&&l2>){
- if(row[l2]<line[l1]){
- for(register int j=;j<=m;j++){
- a[y[row[l2]]][j]=z[row[l2]];
- }
- --l2;
- }
- else{
- for(register int j=;j<=n;j++){
- a[j][y[line[l1]]]=z[line[l1]];
- }
- --l1;
- }
- }
- while(l1>){
- for(register int j=;j<=n;j++){
- a[j][y[line[l1]]]=z[line[l1]];
- }
- --l1;
- }
- while(l2>){
- for(register int j=;j<=m;j++){
- a[y[row[l2]]][j]=z[row[l2]];
- }
- --l2;
- }
- for(register int i=;i<=n;i++){
- for(register int j=;j<=m;j++){
- printf("%d ",a[i][j]);
- }
- printf("\n");
- }
- return ;
- }
- /*
- 3 3 3
- 1 1 3
- 2 2 1
- 1 2 2
- 5 3 5
- 1 1 1
- 1 3 1
- 1 5 1
- 2 1 1
- 2 3 1
- 6 4 9
- 1 1 1
- 1 3 2
- 1 4 3
- 2 2 4
- 1 2 5
- 2 3 6
- 1 4 7
- 2 2 1
- 1 2 1
- */
CF 631B 题解的更多相关文章
- 【AtCoder】ARC094(C-F)题解
C - Same Integers 题解 要么三个都达到最大的数,要么三个都到达最大的数+1,判断是前一种情况的方法是不断垫高前两大的,看之后最小的那个和最大的那个差值是不是2的倍数 否则就是第二种情 ...
- [题解向] CF#536Div2の题解 E&F
\(0x01~~Preface\) \(emmm\)这次CF本身打的很顺畅,但是居然unrated了--咕咕咕咕 这是头一次CF有比赛我全部题目都做了--可喜可贺可喜可贺233 简单总结一下前面四道题 ...
- CF 449D 题解(状压+容斥)
状压妙啊... 本题的主体思路:状压+容斥原理(或状压+数位dp) 记g[i]表示按位与后结果所有位上至少有i个1的方案数 那么根据容斥原理,ans=g[0]-g[1]+g[2]-g[3]+g[4]. ...
- 【codeforces】【比赛题解】#915 Educational CF Round 36
虽然最近打了很多场CF,也涨了很多分,但是好久没写CF的题解了. 前几次刚刚紫名的CF,太伤感情了,一下子就掉下来了,不懂你们Div.1. 珂学的那场我只做了第一题……悲伤. 这次的Education ...
- CF#581 (div2)题解
CF#581 题解 A BowWow and the Timetable 如果不是4幂次方直接看位数除以二向上取整,否则再减一 #include<iostream> #include< ...
- cojs 奈特 题解报告
才知道knight念奈特,而不念科耐特 这个题显然是一个数据结构题目,我搬运的CF上的题 CF的题解好长超长哒,而且可以在线,但是并不能看懂 于是自己想了一个一种做法A掉了,唯一的缺陷就是做法有些繁琐 ...
- 【CF 676B Pyramid of Glasses】模拟,递归
题目链接:http://codeforces.com/problemset/problem/676/B 题意:一个n层的平面酒杯金字塔,如图,每个杯子的容量相同.现在往最顶部的一个杯子倒 t 杯酒,求 ...
- [CF959E]Mahmoud and Ehab and the xor-MST题解
解法 又是一道结论题? 我的做法比较奇怪且没有证明 #include <cstdio> #include <cmath> #define ll long long int ma ...
- 【CodeForces 297C】Splitting the Uniqueness
题意 序列s有n个数,每个数都是不同的,把它每个数分成两个数,组成两个序列a和b,使ab序列各自去掉个数后各自的其它数字都不同. 如果存在一个划分,就输出YES,并且输出两个序列,否则输出NO. 分析 ...
随机推荐
- AngularJS基础语法
1.ng-app 决定了angularjs的作用域范围,你可以如下使用: <html ng-app> … </html> 来让angularjs渲染整个页面,也可以使用 < ...
- 51nod 1402 最大值(贪心)
原题链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1402 思路:借鉴了这篇博文http://blog.csdn.n ...
- 自定义IPython提示符
首先创建IPython的自定义配置文件 $ ipython profile create 可以看到在HOME目录下: 多了两个配置文件 我们修改~/.ipython/profile_default/i ...
- C++入门经典-例6.5-连接字符串
1:运行代码如下: // 6.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> usin ...
- 剑指offer:把一个支付算转化为整数
1:首先,根据课本上的程序,是这样的: #include "stdafx.h" #include "iostream" using namespace std; ...
- 套接字之msghdr结构
用户端在使用sendmsg/recvmsg发送或者接收数据时,会使用msghdr来构造消息,其对应的内核结构为user_msghdr:其中msg_iov向量指向了多个数据区,msg_iovlen标识了 ...
- [MVC HtmlHelper简单了解]
HtmlHelper用来在视图中显示Html控件,简化代码,使用方便!,降低了View视图中的代码复杂度!可以更快速的完成工作! 以下是一些常用 的html标签 辅助方法 使用HTML辅助方法输出 ...
- VIM速查表-转
在linux上一直使用vim,慢慢熟悉了它的命令,才终于领悟了什么是编辑器之神. 最近抽空整理了这份速查表,收获颇丰,并分享给大家. 进入vim vim配置 移动光标 屏幕滚动 插入文本类 删除命令 ...
- 【flask】环境配置-python-dotenv的使用
[自动发现程序实例] 一般来说,在执行flask run命令运行程序前,我们需要提供程序实例所在模块的位置 . Flask会自动探测程序实例,自动探测存在下面这些规则: 从当前目录寻找app.py和w ...
- zk 两阶段提交(待完善)
zk 节点是一个 QuorumPeer,选举结束后,leader 和 follower 各自执行自己的逻辑: org.apache.zookeeper.server.quorum.QuorumPeer ...