观察到列数只有15,可以想到对于每一列维护一颗线段树

sum表示该区间与目标矩阵中该区间相同元素个数

lazy表示该区间应被修改成什么颜色

g即目标矩阵中该区间白色格子的个数

显然一个区间的sum=区间长度-g(修改为0时) 或 g(修改为1时)

#define RG register
#include<cstdio>
using namespace std;
const int N=;
int n,m,q,X,Ans;
int a[N][];
inline int read()
{
RG int x=,w=;RG char ch=getchar();
while(ch<''||ch>''){if(ch=='-')w=-;ch=getchar();}
while(ch>=''&&ch<='')x=x*+ch-'',ch=getchar();
return x*w;
}
struct segment{
int sum[N<<],lazy[N<<],g[N<<];
inline void Pushup(int rt){sum[rt]=sum[rt<<]+sum[rt<<|];}
void Build(int rt,int l,int r,int k){
if(l==r)
{
sum[rt]=a[l][k]^;
g[rt]=a[l][k];
return;
}
int mid=(l+r)>>;
Build(rt<<,l,mid,k);
Build(rt<<|,mid+,r,k);
Pushup(rt);
g[rt]=g[rt<<]+g[rt<<|];
}
inline void Pushdown(int rt,int s){//s即区间长度
int t=lazy[rt];
if(t==-)return;
if(!t)
{
sum[rt<<]=(s-(s>>))-g[rt<<];
sum[rt<<|]=(s>>)-g[rt<<|];
}
else
{
sum[rt<<]=g[rt<<];
sum[rt<<|]=g[rt<<|];
}
lazy[rt<<]=lazy[rt<<|]=t;
lazy[rt]=-;
}
void Modify(int rt,int l,int r,int ll,int rr){
if(ll<=l&&r<=rr)
{
if(X)sum[rt]=g[rt];
else sum[rt]=r-l+-g[rt];
lazy[rt]=X;
return;
}
Pushdown(rt,r-l+);
int mid=(l+r)>>;
if(ll<=mid)Modify(rt<<,l,mid,ll,rr);
if(rr>mid)Modify(rt<<|,mid+,r,ll,rr);
Pushup(rt);
}
}T[];
int main()
{
n=read();
m=read();
q=read();
RG char c;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
c=getchar();
while(c!=''&&c!='')c=getchar();
a[i][j]=c-'';
}
for(int i=;i<=m;i++)T[i].Build(,,n,i);
RG int x1,x2,y1,y2;
while(q--)
{
x1=read();
x2=read();
y1=read();
y2=read();
X=read();
for(int i=y1;i<=y2;i++)T[i].Modify(,,n,x1,x2);
Ans=;
for(int i=;i<=m;i++)Ans+=T[i].sum[];
printf("%d\n",Ans);
}
return ;
}

[USACO09HOL]假期绘画Holiday Painting的更多相关文章

  1. P2930 [USACO09HOL]假期绘画Holiday Painting

    线段树水题,考虑到只有15列,所以我们对于每一列,我们都去维护一个线段树. 现在来考虑一下修改操作,因为每次修改的时候,我们都是将黑的改成白的,白的改成黑的,所以我们对线段树的每个节点维护当前这段区间 ...

  2. [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树

    Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...

  3. [BZOJ1582] [Usaco2009 Hol]Holiday Painting 节日画画(线段树)

    传送门 线段树区间修改傻题 #include <cstdio> #include <cstring> #include <iostream> #define N 5 ...

  4. bzoj AC倒序

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

  5. 关于图片的PNG与JPG、JIF格式

    一:GIF(Graphics Interchange Format) 简介 GIF图形交换格式是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像. 它实际上是一种压缩文档,采用LZW压 ...

  6. 前端进阶试题css(来自js高级前端开发---豪情)既然被发现了HOHO,那我就置顶了嘿嘿!觉得自己技术OK的可以把这套题目做完哦,然后加入高级前端的社区咯

    http://www.cnblogs.com/jikey/p/4426105.html js高级前端开发加群方法(此群很难进,里面纯技术,严禁广告,水群) 完整题目做完发邮箱(jikeytang@16 ...

  7. web前端图片极限优化策略

    随着web的发展,网站资源的流量也变得越来越大.据统计,60%的网站流量均来自网站图片,可见对图片合理优化可以大幅影响网站流量,减小带宽消耗和服务器压力. 一.现有web图片格式 我们先来看下现在常用 ...

  8. GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理

    GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图): GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了 ...

  9. cg tut

    Gesture Drawing with Alex Woo Gesture Drawing with Alex Woo and Louis Gonzales http://eisneim.com/?p ...

随机推荐

  1. Ubuntu 中文拼音输入法键入异常

    如果确定系统装的OK,可以修复ubuntu Ctrl+Alt+t切出终端,输入命令:  " ibus-daemon -drx",然后再输入拼音试一试就会OK .

  2. 手把手教你如何使用Cocos2d Console 进行html5项目发布

    手把手教你如何使用Cocos2d Console 进行html5项目发布   1.首先需要先安装Cocos2d Console运行需要的工具. 详情参见 这篇文章 http://www.cocoach ...

  3. MAC安装flutter开发环境

    #最近在学flutter开发,写一篇记录一下安装的过程 1.配置flutter镜像地址  vim ~/.bash_profile 命令行输入后回车,打开.bash_profile配置镜像地址 expo ...

  4. struts校验

    Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更 ...

  5. 文件6. 查找替换.txt文本文件中的内容

    servlet实现对文本文件的查找替换 .jsp界面 <form> <table> <tr> <td>选择文本文件:</td> <td ...

  6. ubuntu的安装与vim(部分)文件的配置

    Ubuntu的安装与vim相关的配置 虚拟机环境的安装(先说说虚拟机的安装步骤把) 对于安装ubuntu来讲不是很难掌握,但是在Linux系统虚拟机下提供了很多便利的手段,而要配置一个顺手的虚拟机环境 ...

  7. java虚拟机——垃圾回收机制

    问题1:什么是垃圾回收机制? 在java的虚拟机当中,在我们进行实例化的时候,堆会给我们开辟新的空间存放实例.而由于堆,方法区是线程公有,不会像栈区(线程私有)一样随着线程的销毁而销毁.因此在java ...

  8. Windows的Shell命令又是Windows的CMD命令。也就是原来MS-DOS系统保留下来。基本的CMD命令

    Windows常用工具类 记事本 notepad 计算器 calc 画图 mspaint 写字板 write Windows放大镜 magnify 辅助工具管理器 utilman Telnet客户端 ...

  9. 运维ip语法,DNS配置方法

    修改配置文件: /etc/resolv.conf nameserver DNS_IP_1 nameserver DNS_IP_2 nameserver 指定本机解析: /etc/hosts 主机IP ...

  10. 计算机网路中CDP,LLDP,STP的详解

    CDP,LLDP,STP知识详解 (1) CDP CDP(Cisco Discovery Protoco:Cisco发现协议)是Cisco专有的用来发现邻接点的协议 ,所有的Cisco产品都支持CDP ...