传送门

有回档操作,考虑离线,这样就知道最终的操作序列了

发现前面的操作会被后面覆盖,干脆直接从后往前操作,如果一个位置以前染色过了那就不用再染色

所以我们可以用 $n$ 个链表维护 $n$ 个行,操作过的位置直接从链表中删除即可

然后复杂度就是 $O(nm)$,代码中是用 $n$ 个并查集来维护行,都差不多

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=,M=1e5+;
int n,m,d[M][],from[M],sav[M],tot;
int mp[N][N];
struct dsu {
int fa[N];
void init() { for(int i=;i<=n+;i++) fa[i]=i; }
inline int find(int x) { return x==fa[x] ? x : fa[x]=find(fa[x]); }
}g[N];
int main()
{
n=read(),m=read(),m=read();
for(int i=;i<n;i++) g[i].init();
int now=; char s[];
for(int i=;i<=m;i++)
{
scanf("%s",s+);
if(s[]=='P')
{
for(int j=;j<;j++) d[i][j]=read();
from[i]=now; now=i;
}
else if(s[]=='S') sav[++tot]=now;
else now=sav[read()];
}
for(int i=;i<n;i++)
for(int j=;j<n;j++) mp[i][j]=;
int xa,ya,xb,yb,c;
while(now)
{
c=d[now][],xa=d[now][],ya=d[now][],xb=d[now][],yb=d[now][];
for(int i=xa;i<=xb;i+=)
for(int j=g[i].find(ya);j<=yb;j=g[i].find(j+))
g[i].fa[j]=g[i].find(j+),mp[i][j]=c;
for(int i=xa+;i<=xb;i+=)
for(int j=g[i].find(ya+);j<=yb;j=g[i].find(j+))
g[i].fa[j]=g[i].find(j+),mp[i][j]=c;
now=from[now];
}
for(int i=;i<n;i++,puts(""))
for(int j=;j<n;j++) printf("%d ",mp[i][j]);
return ;
}

最新文章

  1. JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串、blob对象在上传
  2. php 使用curl模拟登录人人(校内)网
  3. WPF MVVM模式下实现ListView下拉显示更多内容
  4. 66. Regular Expression Matching
  5. sql server 2008 express 使用ip登陆 error:40 错误:2
  6. [SmartFoxServer概述]SFS2X栈平台
  7. Java 8 新特性概述
  8. 用css样式,为表格加入边框
  9. jquery上传图片
  10. C#委托与事件讲解(一)
  11. 一个web应用的诞生(11)--在探首页
  12. ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序
  13. 使用ADO.NET查询和操作数据库
  14. CSS服务器字体
  15. JavaScript(js)/上
  16. Go 语言函数闭包
  17. 小程序中this和that用法
  18. DevExpress WPF v18.2新版亮点(一)
  19. 25.纯 CSS 创作一个慧星拖尾效果的 loader 动画
  20. python learning Regular Expression.py

热门文章

  1. 客户端框架-MVVM
  2. C++入门经典-例3.8-使用条件表达式判断一个数是否是3和5的整倍数
  3. How does ASP.NET Forms Authentication really work?
  4. 使用ViewPager实现广告自动轮播的效果
  5. Python之异常处理-Exception
  6. table 隔列换色
  7. OpenvSwitch/OpenFlow 架构解析与实践案例
  8. python调用dll详解
  9. CentOS 升级 openSSH+ sh脚本自动运维
  10. How do I add a Foreign Key Field to a ModelForm in Django?