当前位置: 首页 > news >正文

BZOJ3189 : [Coci2011]Slika

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

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

时间复杂度$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;
}

  

相关文章:

  • logback日志交给logstash处理
  • Tutorial: Android Wear with Genymotion
  • Maven 版 JPA 最佳实践(转)
  • 软件工程的意识
  • 从Select语句看Oracle查询原理
  • HDU1996 汉诺塔VI
  • Linux-Crontab服务
  • schwarz( 施瓦兹)不等式证明
  • “重定向次数过多”或者“Too many automatic redirections were attempted”的错误:
  • asp.net给asp:button同时添加服务器事件和JS事件
  • 三层交换实现VLAN互通
  • 小白javascript做考试页(一)
  • 在Centos6.5中配置国内网络yum源以及本地yum源
  • JS操作cookies方法
  • 访谈《敏捷和精益项目集管理》的作者Johanna Rothman
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Js基础知识(四) - js运行原理与机制
  • linux安装openssl、swoole等扩展的具体步骤
  • PAT A1092
  • python 装饰器(一)
  • 成为一名优秀的Developer的书单
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 官方解决所有 npm 全局安装权限问题
  • 前端存储 - localStorage
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (多级缓存)缓存同步
  • (二)windows配置JDK环境
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (一)appium-desktop定位元素原理
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)可以带来幸福的一本书
  • (转)原始图像数据和PDF中的图像数据
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (轉貼) UML中文FAQ (OO) (UML)
  • ./configure,make,make install的作用(转)
  • .libPaths()设置包加载目录
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core引入性能分析引导优化
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 使窗口永不获得焦点
  • .net反编译的九款神器