通过离线将操作建树,即可得到最终存在的操作。

然后逆着操作的顺序,倒着进行染色,对于每行维护一个并查集即可。

时间复杂度$O(n(n+m))$。

#include<cstdio>
const int N=1010,M=100010;
int n,m,i,j,x,C,X1,Y1,X2,Y2,f[M],cnt,pos[M],e[M][5],col[N][N];char ch;
struct DSU{
int f[N];
void init(){for(int i=0;i<=n+1;i++)f[i]=i;}
int F(int x){return f[x]==x?x:f[x]=F(f[x]);}
}g[N];
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
int main(){
read(n),read(m),read(m);
for(i=1;i<=m;i++){
while((ch=getchar())!='P'&&ch!='S'&&ch!='L');
if(ch=='P'){
f[i]=x;x=i;
for(j=0;j<5;j++)read(e[i][j]);
}
if(ch=='S')pos[++cnt]=x;
if(ch=='L')read(x),x=pos[x];
}
for(i=0;i<n;i++)for(j=0;j<n;j++)col[i][j]=1;
for(i=0;i<n;i++)g[i].init();
while(x){
C=e[x][0],X1=e[x][1],Y1=e[x][2],X2=e[x][3],Y2=e[x][4];
for(i=X1;i<=X2;i+=2)for(j=g[i].F(Y1);j<=Y2;j=g[i].F(j+2))g[i].f[j]=j+2,col[i][j]=C;
for(i=X1+1;i<=X2;i+=2)for(j=g[i].F(Y1+1);j<=Y2;j=g[i].F(j+2))g[i].f[j]=j+2,col[i][j]=C;
x=f[x];
}
for(i=0;i<n;puts(""),i++)for(j=0;j<n;j++)printf("%d ",col[i][j]);
return 0;
}

  

BZOJ3189 : [Coci2011]Slika的更多相关文章

  1. BZOJ 3189. [Coci2011]Slika

    传送门 有回档操作,考虑离线,这样就知道最终的操作序列了 发现前面的操作会被后面覆盖,干脆直接从后往前操作,如果一个位置以前染色过了那就不用再染色 所以我们可以用 $n$ 个链表维护 $n$ 个行,操 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 【题解】Ples [COCI2011]

    [题解]Ples [COCI2011] 依旧是没有传送门,只有提供了数据的官网. [题目描述] \(N\) 个汉子和 \(N\) 个妹纸一起参加舞会,跳舞时只能是一个汉子一个妹纸配对,现在给出每个人的 ...

  4. 【题解】Dvoniz [COCI2011]

    [题解]Dvoniz [COCI2011] 没有传送门,只有提供了数据的官网. [题目描述] 对于一个长度为 \(2*K\) 的序列,如果它的前 \(K\) 个元素之和小于等于 \(S\) 且后 \( ...

  5. coci2011 debt 还债

    coci2011 debt 还债 Description 有N个人,每个人恰好欠另一个人Bi元钱,现在大家都没有钱,政府想要给其中一些人欠,使得大家都不欠别人钱. 如A欠B 50,B欠C 20,则当政 ...

  6. COCI2011:友好数对

    校内OJ传送门 一般容斥,具体思想参考代码实现,刚开始是在读入时处理所有数的二进制子集,没看$N$的范围以为复杂度不会爆炸.. 然后复杂度就爆炸了. 小优化: 每次整个载入二进制,计数.这个结束后枚举 ...

  7. JZYZOJ1376 [coci2011]友好数对 容斥定理 状态压缩

    http://172.20.6.3/Problem_Show.asp?id=1376 题意:找给出的数中含有相同数字的数对的对数. mmp数论题竟然卡快读,莫名拉低通过率什么的太过分了. 刚开始想到了 ...

  8. [coci2011]友好数对 容斥

    无趣的小x在玩一个很无趣的数字游戏.他要在n个数字中找他喜欢友好数对.他对友好数对的定义是:如果有两个数中包含某一个以上相同的数位(单个数字),这两个数就是友好数对.比如:123和345 就是友好数对 ...

随机推荐

  1. Android Service 与 Thread 的区别

    Ref:http://blog.csdn.net/jiangwei0910410003/article/details/17008687 1). Thread:Thread 是程序执行的最小单元,它是 ...

  2. NYOJ题目1049自增自减

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsYAAAN0CAIAAAA4f3koAAAgAElEQVR4nO3dO3LbyNoG4H8TyrUQx1

  3. bootstratp图标的使用

    bootstratp作为一个优秀的前端框架,最近使用了其中的Glyphicon Halflings的字体图标.起初一直显示不出来,后面通过搜索相关资料直到成功显示,在此做一些总结,方便后面复习. 1. ...

  4. Faster-rnnlm代码分析1 - 词表构建,Nnet成员

    https://github.com/yandex/faster-rnnlm     Gdb ./rnnlm r -rnnlm model-good.faster -train thread.titl ...

  5. ExcelReport第二篇:ExcelReport源码解析

    导航 目   录:基于NPOI的报表引擎——ExcelReport 上一篇:使用ExcelReport导出Excel 下一篇:扩展元素格式化器 概述 针对上一篇随笔收到的反馈,在展开对ExcelRep ...

  6. 关于cout<<ends你不知道的那些事

    关于ends是C++中比较基础的一个东西,但是可能不是每个人都能够清楚的理解这是个什么东西,我就经历了这么一个过程,写出来让大家看看,有什么理解的不对的地方欢迎拍砖. 今天以前我对ends的理解是:输 ...

  7. [Linux] 解压tar.gz文件,解压部分文件

    遇到数据库无法查找问题原因,只能找日志,查找日志的时候发现老的日志都被压缩了,只能尝试解压了   数据量比较大,只能在生产解压了,再进行查找 文件名为*.tar.gz,自己博客以前记录过解压方法: h ...

  8. (四)WebRTC手记之本地音频采集

    转自:http://www.cnblogs.com/fangkm/p/4374668.html 上一篇博文介绍了本地视频采集,这一篇就介绍下音频采集流程,也是先介绍WebRTC原生的音频采集,再介绍C ...

  9. 关于三星I9305出现android.process.acore提示问题

    背景:自己用百度云同步通讯录和用微信电话本删除联系人的时候总出现提示acore问题,为此上网找了许久. 网络上多说解决方案为:把Calendar.apk和CalendarProvider.apk两个文 ...

  10. Eclipse调试方法及快捷键

    基本操作 断点,breakpoint: F5键与F6键均为单步调试: F5是step into,也就是进入本行代码中执行,跳入 F6是step over,跳过,也就是执行本行代码,跳到下一行 F7是跳 ...