BZOJ 1582: [Usaco2009 Hol]Holiday Painting 节日画画
发现列数只有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 节日画画相关推荐
- [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树
Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...
- bzoj [Usaco2009 Hol]Cattle Bruisers 杀手游戏
Description Input 第1行输入N,R,BX,BY, BVX,BVY,之后N行每行输入四个整数Xi,Yi,VXi,VYi. Output 一个整数,表示在逃脱过程中,某一个时刻最多有这个 ...
- 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 [ ...
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望( 单调栈 )
n <= 105 , 其实是10 ^ 5 ....坑...我一开始写了个模拟结果就 RE 了.. 发现这个后写了个单调栈就 A 了... ---------------------------- ...
- bzoj 3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 145 Solved: 119 ...
- bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(DP)
3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 353 Solved: 248 ...
- bzoj 3396: [Usaco2009 Jan]Total flow 水流(最大流)
3396: [Usaco2009 Jan]Total flow 水流 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 615 Solved: 295 ...
- bzoj 3394: [Usaco2009 Jan]Best Spot 最佳牧场(floyd)
3394: [Usaco2009 Jan]Best Spot 最佳牧场 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 98 Solved: 76 [ ...
- 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: ...
- bzoj 3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵
3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵 Time Limit: 3 Sec Memory Limit: 128 MB Submit: ...
最新文章
- HTML超出部分滚动效果 HTML滚动 HTML下拉 附效果图
- 在不同浏览器中,input里面的输入光标大小表现形式却大不相同
- discuz安装_手动搭建 Discuz! 论坛
- 当append遇到make遇到的坑
- Java创建型设计模式之简单工厂,工厂方法,抽象工厂
- 深度总结,带你玩转 NVIDIA GPU
- Netty权威指南学习笔记
- 一卡通管理系统总体设计
- 开发常用词汇表(带音标)
- 软件测试中的“银行企业银行对公渠道转账和财务查询和银企对账项目”
- webpack如何将css文件单独抽离
- OpenGL LookAt、Camera摄像机
- docker 部署jenkins + sonarqube + postgresql 代码扫描
- ZKT门禁机标准联接线(按键开关不经过卡机)
- 【实用】关于Ubuntu下的对拍程序
- 开源的价值观与文化的传递
- vue 自定义指令
- 右击我的电脑--管理--计算机管理,在我的电脑上点右键-管理打不开了?
- 验证运放输入端之间电容作用
- 【墨子对战平台】还没连接上墨子推演服务器,再等1秒 解决办法
热门文章
- C	Sleepy Kaguya
- c语言实参和形参占用存储单元_c语言的形参是否占存储单元
- java pdf转图片base64,itextpdf 实现html转pdf中中文及图片base64的解决方法
- 读书笔记 摘自:《跟任何人都聊得来》
- 图像算法---白平衡AWB
- C++中函数后面加const
- 拥有古风意境美的书签铜流苏
- Common Lisp 超规范(译文):5.数据和控制流
- android通过辅助功能收集数据
- xocde8打印出:Presenting view controllers on detached view controllers is discouraged SettingViewContro