HOJ 2681 Magic-Pen1
来源:互联网 发布:成功的网络促销 编辑:程序博客网 时间:2024/06/07 02:14
N条单位线段一开始全是白色。有操作使得[l,r]变成黑色或者白色,问最后白色的单位线段的个数。
线段树区间修改,lazy。黑色用0表示,白色用1,这样维护一个sum表示白色个数就可以了。
#include <cstdio>#include <algorithm>using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 111111;int h , w , n;int col[maxn<<2];int sum[maxn<<2];void PushUp(int rt){ sum[rt] = sum[rt<<1] + sum[rt<<1|1];}void PushDown(int rt,int m){ if (col[rt] == 1) { col[rt<<1] = col[rt<<1|1] = col[rt]; sum[rt<<1] = (m - (m >> 1)) * col[rt]; sum[rt<<1|1] = (m >> 1) * col[rt]; col[rt] = 0; } else if(col[rt] == -1) { col[rt<<1] = col[rt<<1|1] = col[rt]; sum[rt<<1] = 0; sum[rt<<1|1] = 0; col[rt] = 0; }}void build(int l,int r,int rt){ col[rt] = 0; sum[rt] = 1; if (l == r) return ; int m = (l + r) >> 1; build(lson); build(rson); PushUp(rt);}void update(int L,int R,int c,int l,int r,int rt){ if (L <= l && r <= R) { col[rt] = c; if(c == 1) sum[rt] = c * (r - l + 1); else sum[rt] = 0; return ; } PushDown(rt , r - l + 1); int m = (l + r) >> 1; if (L <= m) update(L , R , c , lson); if (R > m) update(L , R , c , rson); PushUp(rt);}int main(){ int n , m; while(~scanf("%d%d",&n,&m)) { build(1 , n , 1); while (m --) { int a , b , c; scanf("%d%d%d",&a,&b,&c); if(c == 1) update(a , b , -1 , 1 , n , 1); else update(a , b , 1 , 1 , n , 1); } printf("%d\n",sum[1]); } return 0;}
0 0
- HOJ 2681 Magic-Pen1
- Magic-Pen1 hoj
- HOJ 2686 Magic-Box
- HOJ 2686 Magic-Box
- HOJ 2682 Magic-Pen2
- HOJ 2683 Magic-Pen3
- hoj2681Magic-Pen1
- HOJ Magic Bracelet polya置换第二个里程碑
- (简单)线段树 HOJ 2965 Magic-Pen4
- HOJ
- Poj 2888 & Hoj 2722 Magic Bracelet (有限制的Burnside 矩阵性质 欧拉函数)
- 【magic】
- magic
- Magic
- magic
- HOJ 1004
- 位图-hoj
- HOJ 1020
- Android Activity生命周期简明、详细介绍
- Android 进程/内存管理误区
- POJ 2777 Count Color
- 【Unity】A*算法搜索过程可视化
- 2015/2/19
- HOJ 2681 Magic-Pen1
- 《算法导论》笔记(15) 最小生成树 部分习题
- 新年之夜,大地春晖
- JOS中 "spinlock" 的实现
- Linux江湖08:使用GCC和GNU Binutils编写能在x86实模式运行的16位代码
- Linux江湖019:虚拟机体验之QEMU篇
- lua学习笔记---综合使用总结
- Linux江湖06:感悟GNU C以及将Vim打造成C/C++的半自动化IDE
- 图像处理---LoMo