传送门

线段树区间修改傻题

#include <cstdio>
#include <cstring>
#include <iostream>
#define N 50001
#define root 1, 1, n
#define ls now << 1, l, mid
#define rs now << 1 | 1, mid + 1, r int n, m, q, res;
int ans[16][N << 2], sum[16][N][2], add[16][N << 2];
char s[N];
//sum[i][j]表示第i列前j个中0的个数 inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} inline void build(int id, int now, int l, int r)
{
if(l == r)
{
ans[id][now] = sum[id][l][0] - sum[id][l - 1][0];
return;
}
int mid = (l + r) >> 1;
build(id, ls);
build(id, rs);
ans[id][now] = ans[id][now << 1] + ans[id][now << 1 | 1];
} inline void push_down(int id, int now, int l, int r)
{
if(add[id][now] ^ -1)
{
int mid = (l + r) >> 1;
add[id][now << 1] = add[id][now];
add[id][now << 1 | 1] = add[id][now];
ans[id][now << 1] = sum[id][mid][add[id][now]] - sum[id][l - 1][add[id][now]];
ans[id][now << 1 | 1] = sum[id][r][add[id][now]] - sum[id][mid][add[id][now]];
add[id][now] = -1;
}
} inline void update(int id, int now, int l, int r, int x, int y, int c)
{
if(x <= l && r <= y)
{
add[id][now] = c;
ans[id][now] = sum[id][r][c] - sum[id][l - 1][c];
return;
}
push_down(id, now, l, r);
int mid = (l + r) >> 1;
if(x <= mid) update(id, ls, x, y, c);
if(mid < y) update(id, rs, x, y, c);
ans[id][now] = ans[id][now << 1] + ans[id][now << 1 | 1];
} int main()
{
int i, j, r1, r2, c1, c2, x;
n = read();
m = read();
q = read();
for(i = 1; i <= n; i++)
{
scanf("%s", s + 1);
for(j = 1; j <= m; j++)
{
sum[j][i][0] = sum[j][i - 1][0] + (s[j] == '0');
sum[j][i][1] = sum[j][i - 1][1] + (s[j] == '1');
}
}
for(i = 1; i <= m; i++) build(i, root);
memset(add, -1, sizeof(add));
while(q--)
{
r1 = read();
r2 = read();
c1 = read();
c2 = read();
x = read();
res = 0;
for(i = c1; i <= c2; i++)
update(i, root, r1, r2, x);
for(i = 1; i <= m; i++) res += ans[i][1];
printf("%d\n", res);
}
return 0;
}

  

[BZOJ1582] [Usaco2009 Hol]Holiday Painting 节日画画(线段树)的更多相关文章

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

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

  2. 【CF576E】Painting Edges 线段树按时间分治+并查集

    [CF576E]Painting Edges 题意:给你一张n个点,m条边的无向图,每条边是k种颜色中的一种,满足所有颜色相同的边内部形成一个二分图.有q个询问,每次询问给出a,b代表将编号为a的边染 ...

  3. 【BZOJ】1664: [Usaco2006 Open]County Fair Events 参加节日庆祝(线段树+dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1664 和之前的那题一样啊.. 只不过权值变为了1.. 同样用线段树维护区间,然后在区间范围内dp. ...

  4. [bzoj1507][Usaco2009 Hol]Transmission Delay 传输谍延时_动态规划

    Transmission Delay 传输谍延时 bzoj-1581 Usaco-2009 Hol 题目大意:题目链接. 注释:略. 想法: 动态规划. 首先我们考虑从后往前dp.(最近好多题都是从后 ...

  5. [bzoj1577][Usaco2009 Feb]庙会捷运Fair Shuttle_贪心_线段树

    庙会捷运 Fair Shuttle bzoj-1577 Usaco-2009 Feb 题目大意:有一辆公交车从1走到n.有m群奶牛从$S_i$到$E_i$,第i群奶牛有$W_i$只.车有一个容量c.问 ...

  6. bzoj 1576 [Usaco2009 Jan]安全路经Travel(树链剖分,线段树)

    [题意] 给定一个无向图,找到1-i所有的次短路经,要求与最短路径的最后一条边不重叠. [思路] 首先用dijkstra算法构造以1为根的最短路树. 将一条无向边看作两条有向边,考察一条不在最短路树上 ...

  7. 1019.Line Painting(线段树 离散化)

    1019 离散化都忘记怎么写了 注意两个端点 离散化后用线段树更新区间 混色为-1  黑为2  白为1  因为N不大 最后直接循环标记这一段的颜色查找 #include <iostream> ...

  8. [USACO09HOL]假期绘画Holiday Painting

    观察到列数只有15,可以想到对于每一列维护一颗线段树 sum表示该区间与目标矩阵中该区间相同元素个数 lazy表示该区间应被修改成什么颜色 g即目标矩阵中该区间白色格子的个数 显然一个区间的sum=区 ...

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

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

随机推荐

  1. Spring MVC系列[1]—— HelloWorld

    1.导入jar包 ioc mvc 复制spring-mvc.xml到src目录下. 2.web.xml <?xml version="1.0" encoding=" ...

  2. EJB2.0版本的HelloWorld

    EJB2.0版本的HelloWorld   虽然EJB3.1已经出来了,可是EJB2.0的项目还需要维护啊.下面写个简单EJB2.0的HelloWorld程序,练练手.   环境: JBoss 4.0 ...

  3. Educational Codeforces Round 12补题 经典题 再次爆零

    发生了好多事情 再加上昨晚教育场的爆零 ..真的烦 题目链接 A题经典题 这个题我一开始推公式wa 其实一看到数据范围 就算遍历也OK 存在的问题进制错误 .. 思路不清晰 两个线段有交叉 并不是端点 ...

  4. LVM逻辑分区的优缺点与步骤

    一.LVM简介 1. 什么是LVM? LVM是 Logical Volume Manager(逻辑卷管理)的简写 2. 为什么使用LVM? LVM通常用于装备大量磁盘的系统,但它同样适于仅有一.两块硬 ...

  5. git 添加 ,密匙

    转载此处   https://blog.csdn.net/xiayiye5/article/details/79652296

  6. 常用的 Excel 函数

    概述 Excel 学的好,函数不可少.接下来就了解常用的函数. 首先作下简要说明: 本文的内容大多从网上搜集并加以个人理解整理而来,由于初学,可能会出现错误,如有欢迎指出: 所用演示软件为免费丑陋的 ...

  7. 思维 || Make It Equal

    http://codeforces.com/contest/1065/problem/C 题意:给你n个高度分别为a[i]的塔,每次可以横着切一刀,切掉不多于k个塔,问最少切多少刀才能把塔切的都一样高 ...

  8. 关于POST的请求的问题的汇总

    1)404 解决方式:检查路径,路由问题 2)500 解决方式:1)首先检查代码 2)检查是否是参数未接收到 3)检查是否Content-Type类型导致的参数未收到 4)区分body-raw跟bod ...

  9. ueditor1.4.3.all.js报错

    .replace( /<[^>/]+>/g, '' ) 转义符问题! 修改为: .replace( /<[^>\/]+>/g, '' )

  10. bootstrap历练实例:复选框或单选按钮作为输入框组的前缀或后缀

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...