发现列数只有15,那么建15棵线段树分开做即可。
初始化时,注意ans(区间内贡献)与sum(区间内1个数)的区别。
区间修改时,也需要根据v的值,进行分类讨论。
#include <bits/stdc++.h>
using namespace std;
const int N=5e4+5;
int n,m,q,l,r,ll,rr,v,now;
int a[N][16],ans[16][N<<2],sum[16][N<<2],tag[16][N<<2];void build(int k,int l,int r,int i)
{if (l==r){ans[i][k]=(a[l][i]==0);sum[i][k]=a[l][i];  //区间内有几个1 return;}int mid=l+r>>1;build(k<<1,l,mid,i);build(k<<1|1,mid+1,r,i);ans[i][k]=ans[i][k<<1]+ans[i][k<<1|1];sum[i][k]=sum[i][k<<1]+sum[i][k<<1|1];
}inline void pushdown(int k,int l,int r,int mid,int i)
{if (~tag[i][k]){tag[i][k<<1]=tag[i][k<<1|1]=tag[i][k];if (!tag[i][k]){ans[i][k<<1]=mid-l+1-sum[i][k<<1];ans[i][k<<1|1]=r-(mid+1)+1-sum[i][k<<1|1];}else{ans[i][k<<1]=sum[i][k<<1];ans[i][k<<1|1]=sum[i][k<<1|1];}tag[i][k]=-1;}
}void change(int k,int l,int r,int qx,int qy,int v,int i)
{if (qx<=l && r<=qy){if (!v) ans[i][k]=r-l+1-sum[i][k];else ans[i][k]=sum[i][k];tag[i][k]=v;return;}int mid=l+r>>1;pushdown(k,l,r,mid,i);if (qx<=mid) change(k<<1,l,mid,qx,qy,v,i);if (mid<qy) change(k<<1|1,mid+1,r,qx,qy,v,i);ans[i][k]=ans[i][k<<1]+ans[i][k<<1|1];
}   int main(){memset(tag,-1,sizeof(tag));scanf("%d%d%d",&n,&m,&q);for (register int i=1; i<=n; ++i)for (register int j=1; j<=m; ++j) scanf("%1d",&a[i][j]); for (register int i=1; i<=m; ++i) build(1,1,n,i);while (q--){scanf("%d%d%d%d%d",&l,&r,&ll,&rr,&v);for (register int i=ll; i<=rr; ++i) change(1,1,n,l,r,v,i);now=0;for (register int i=1; i<=m; ++i) now+=ans[i][1];printf("%d\n",now);}
return 0;
}

BZOJ 1582: [Usaco2009 Hol]Holiday Painting 节日画画相关推荐

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

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

  2. bzoj [Usaco2009 Hol]Cattle Bruisers 杀手游戏

    Description Input 第1行输入N,R,BX,BY, BVX,BVY,之后N行每行输入四个整数Xi,Yi,VXi,VYi. Output 一个整数,表示在逃脱过程中,某一个时刻最多有这个 ...

  3. bzoj 3386 bzoj 3408: [Usaco2009 Oct]Heat Wave 热浪(最短路)

    3408: [Usaco2009 Oct]Heat Wave 热浪 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 301  Solved: 223 [ ...

  4. BZOJ 3401: [Usaco2009 Mar]Look Up 仰望( 单调栈 )

    n <= 105 , 其实是10 ^ 5 ....坑...我一开始写了个模拟结果就 RE 了.. 发现这个后写了个单调栈就 A 了... ---------------------------- ...

  5. bzoj 3399: [Usaco2009 Mar]Sand Castle城堡

    3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 145  Solved: 119 ...

  6. bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(DP)

    3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 353  Solved: 248 ...

  7. bzoj 3396: [Usaco2009 Jan]Total flow 水流(最大流)

    3396: [Usaco2009 Jan]Total flow 水流 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 615  Solved: 295 ...

  8. bzoj 3394: [Usaco2009 Jan]Best Spot 最佳牧场(floyd)

    3394: [Usaco2009 Jan]Best Spot 最佳牧场 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 98  Solved: 76 [ ...

  9. bzoj 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题(DP)

    3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: ...

  10. bzoj 3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵

    3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵 Time Limit: 3 Sec  Memory Limit: 128 MB Submit:  ...

最新文章

  1. HTML超出部分滚动效果 HTML滚动 HTML下拉 附效果图
  2. 在不同浏览器中,input里面的输入光标大小表现形式却大不相同
  3. discuz安装_手动搭建 Discuz! 论坛
  4. 当append遇到make遇到的坑
  5. Java创建型设计模式之简单工厂,工厂方法,抽象工厂
  6. 深度总结,带你玩转 NVIDIA GPU
  7. Netty权威指南学习笔记
  8. 一卡通管理系统总体设计
  9. 开发常用词汇表(带音标)
  10. 软件测试中的“银行企业银行对公渠道转账和财务查询和银企对账项目”
  11. webpack如何将css文件单独抽离
  12. OpenGL LookAt、Camera摄像机
  13. docker 部署jenkins + sonarqube + postgresql 代码扫描
  14. ZKT门禁机标准联接线(按键开关不经过卡机)
  15. 【实用】关于Ubuntu下的对拍程序
  16. 开源的价值观与文化的传递
  17. vue 自定义指令
  18. 右击我的电脑--管理--计算机管理,在我的电脑上点右键-管理打不开了?
  19. 验证运放输入端之间电容作用
  20. 【墨子对战平台】还没连接上墨子推演服务器,再等1秒 解决办法

热门文章

  1. C Sleepy Kaguya
  2. c语言实参和形参占用存储单元_c语言的形参是否占存储单元
  3. java pdf转图片base64,itextpdf 实现html转pdf中中文及图片base64的解决方法
  4. 读书笔记 摘自:《跟任何人都聊得来》
  5. 图像算法---白平衡AWB
  6. C++中函数后面加const
  7. 拥有古风意境美的书签铜流苏
  8. Common Lisp 超规范(译文):5.数据和控制流
  9. android通过辅助功能收集数据
  10. xocde8打印出:Presenting view controllers on detached view controllers is discouraged SettingViewContro