传送门

线段树区间修改傻题

#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. uvm_pkg——老板,打包带走

    Thus spake the master programmer: “After three day without programming, life becomes meaningless.” 编 ...

  2. office word excel等图标显示异常

    1.查看注册表:查看参数对应的路径被删除,计算机搜索新的文件路径更改路径即可.以此类推~ 计算机\HKEY_CLASSES_ROOT\Excel.Sheet.12\DefaultIcon 正常exce ...

  3. 使用js将后台返回的数据转换成树形结构

    将类似如下数据转换成树形的数据: [ { id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1 ...

  4. python之路——递归函数

    阅读目录 楔子 初识递归 再谈递归 递归函数与三级菜单 递归函数与二分查找算法 楔子 在讲今天的内容之前,我们先来讲一个故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前 ...

  5. nodejs:遍历文件夹文件统计文件大小

    根据 http://blog.csdn.net/hero82748274/article/details/45700465这里的思路对读写文件做了一个 封装: webpack在打包的时候可以借助ass ...

  6. layui和jquery冲突:Syntax error, unrecognized expression: +

    问题 layui创建table数据表格,但点击第二页时控制台报错,错误信息如下: 解决方法 https://fly.layui.com/jie/24224/ http://www.layui.com/ ...

  7. ios坐标系统

    在写程序的时候发现,iOS下的坐标.位置很容易弄乱,特别是在不同的坐标系统中,必须完成弄明白一些概念才能做相应的变化,例如CoreImage和UIView的坐标系统就截然不同,一个是以屏幕的左上角为原 ...

  8. (45)zabbix报警媒介:SMS

    介绍 服务器安装串口GSM短信猫之后,zabbix可以使用它来发送短信通知给管理员,如下注意事项: 串行设备速度要与GSM猫相匹配(linux下默认为/dev/ttyS0),zabbix无法设置设置串 ...

  9. Linux运维发展与学习路线图

    记录一下Linux所要懂的知识体系,方便未来学习的时候自我验证. Linux运维课程体系大纲: Linux入门 了解Linux基础,知道什么是Linux,会安装Linux,使用相关基础命令,如:cd, ...

  10. RN在设备上运行

    https://facebook.github.io/react-native/docs/running-on-device.html 在发布之前,最好是在真实的设备上测试一下应用.如果是通过crea ...