[USACO09HOL]假期绘画Holiday Painting
观察到列数只有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的更多相关文章
- P2930 [USACO09HOL]假期绘画Holiday Painting
线段树水题,考虑到只有15列,所以我们对于每一列,我们都去维护一个线段树. 现在来考虑一下修改操作,因为每次修改的时候,我们都是将黑的改成白的,白的改成黑的,所以我们对线段树的每个节点维护当前这段区间 ...
- [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树
Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...
- [BZOJ1582] [Usaco2009 Hol]Holiday Painting 节日画画(线段树)
传送门 线段树区间修改傻题 #include <cstdio> #include <cstring> #include <iostream> #define N 5 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 关于图片的PNG与JPG、JIF格式
一:GIF(Graphics Interchange Format) 简介 GIF图形交换格式是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像. 它实际上是一种压缩文档,采用LZW压 ...
- 前端进阶试题css(来自js高级前端开发---豪情)既然被发现了HOHO,那我就置顶了嘿嘿!觉得自己技术OK的可以把这套题目做完哦,然后加入高级前端的社区咯
http://www.cnblogs.com/jikey/p/4426105.html js高级前端开发加群方法(此群很难进,里面纯技术,严禁广告,水群) 完整题目做完发邮箱(jikeytang@16 ...
- web前端图片极限优化策略
随着web的发展,网站资源的流量也变得越来越大.据统计,60%的网站流量均来自网站图片,可见对图片合理优化可以大幅影响网站流量,减小带宽消耗和服务器压力. 一.现有web图片格式 我们先来看下现在常用 ...
- GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理
GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图): GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了 ...
- cg tut
Gesture Drawing with Alex Woo Gesture Drawing with Alex Woo and Louis Gonzales http://eisneim.com/?p ...
随机推荐
- IE浏览器下flex布局的bug
原文地址:gitub上的Flexbugs list,可以看到Flex布局在IE糟糕表现的详细描述. 2. Column flex items set to align-items:center ove ...
- python day18 作业 Django 开发主机管理系统
http://www.cnblogs.com/liang2580/p/9248803.html
- ubuntu 16.04 安装 opencv +contrib (3.2.0) + python 3.5
环境: - ubuntu 16.04 - OpenCV + contrib 3.2.0 (文中附下载链接) - Python 3.5 基于其他环境的配置应该大同小异. 没时间解释了,直接上车. 更新下 ...
- python笔记18-高阶函数
高阶函数: 如果一个函数的入参是一个函数名的话,那这个函数就是一个高阶函数 函数即变量 # def hello(name):# print(name)# new_hello = hello#hello ...
- List集合联系
创建一个List,在List 中增加三个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22 3200 a) 在li4 之前插入一个工人,信息 ...
- 关于JS 的cookie 操作 与 json 的数据结构 问题
今天写了一个购物车,由于购物车内容是保存在 cookie中 所以不想浪费服务器资源做cookie的操作 故在前端封装了一些对象来处理购物车,由于cookie的数据结构的设计是一个json格式 使用 账 ...
- hadoop管理命令
-help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs -ls hdfs://hadoop-server01:9000/ 备注:这些参数中,所有的hdfs ...
- Timer 的学习
Timer 实例化多个对象就会启动多个线程 TimerTask 中 捕获异常为基类Exception,那么出现异常后就继续执行.及时报错 TimerTask中未捕获异常或者捕获异常与程序抛出异常不一致 ...
- c++中,如果访问数组越界,程序可能会意外终止(像死循环)
#include<iostream> using namespace std; ];// int main(){ vis[]=;//访问越界 ; } 程序错误表现:
- Ubuntu 16.04 上安装 MySQL 5.7 教程
介绍 MySQL 是一种开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装.它使用关系数据库和SQL(结构化查询 ...