题意:初始1-n 值为1,有Q操作,每次可以把一段【l,r】 整段每个值变成 x,问最后的【1,n】总和。

线段树成段更新(基础题)

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include <iostream>
#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define debug(x) printf(#x"= %d\n",x);
#define N 100050
using namespace std;
];
];
void build(int l, int r, int i) {
    sum[i] = r - l + ;
    flag[i] = ;
    if (l != r) {
        ;
        build(l, mid, L(i));
        build(mid + , r, R(i));
    }
}
void pushdown(int i, int l, int r, int mid) {
    flag[L(i)] = flag[R(i)] = flag[i];
    sum[L(i)] = (mid - l + ) * flag[i];
    sum[R(i)] = (r - mid) * flag[i];
    flag[i] = ;
}
void update(int l, int r, int pl, int pr, int va, int i) {

    if (l >= pl && r <= pr) {
        flag[i] = va;
        sum[i] = (r - l + ) * va;
        return;
    }
    ;
    if (flag[i])
        pushdown(i, l, r, mid);
    if (pl <= mid)
        update(l, mid, pl, pr, va, L(i));
    if (pr > mid)
        update(mid + , r, pl, pr, va, R(i));
    sum[i] = sum[L(i)] + sum[R(i)];
}
int main() {
    , tt;
    scanf("%d", &tt);
    while (tt--) {
        scanf("%d%d", &n, &q);
        build(, n, );
        while (q--) {
            int x, y, z;
            scanf("%d%d%d", &x, &y, &z);
            update(, n, x, y, z, );
        }
        printf(]);
    }
    ;
}

随机推荐

  1. 基于apache的tomcat负载均衡和集群配置

    最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...

  2. php 在客户端生成txt文件并且下载

    在访问php时生成txt文件 $filename = 'file.text'; //也可以是其他后缀格式的 $ua = $_SERVER["HTTP_USER_AGENT"]; f ...

  3. 什么是实时应用程序自我保护(RASP)?

    什么产品可以定义为 RASP? RASP 英文为 Runtime application self-protection,它是一种新型应用安全保护技术,它将保护程序想疫苗一样注入到应用程序和应用程序融 ...

  4. UIScrollView的几个要点总结

    从你的手指touch屏幕开始,scrollView开始一个timer,如果: 1.  150ms内如果你的手指没有任何动作,消息就会传给subView. 2.  150ms内手指有明显的滑动(一个sw ...

  5. SharePoint 2010 之soap:Server服务器无法处理请求

    算是一个下马威?!刚刚部署上的SharePoint2010环境,感觉很欣喜,开始操作,结果装上Designer2010,打开页面,居然报错 错误内容:soap:Server服务器无法处理请求. --- ...

  6. iOS设置截图背景图片透明

    /** 设置图片背景为透明 */- (UIImage *)imageToTransparent { // 分配内存 const int imageWidth = self.size.width; co ...

  7. Python框架学习之Flask中的数据库操作

    数据库操作在web开发中扮演着一个很重要的角色,网站中很多重要的信息都需要保存到数据库中.如用户名.密码等等其他信息.Django框架是一个基于MVT思想的框架,也就是说他本身就已经封装了Model类 ...

  8. LabVIEW 获取本机多个ip地址

    图 1   网上见了好多设置的,都没讲清楚,在这里整理一下本机ip地址的获取问题.关键在"字符串向ip地址转换"函数的设置上面,见下图2,选择多输出就能获取本机的多个ip地址,若不 ...

  9. webbench1.5源码读后总结

    webbench简介 webbench由C语言写成的用于网站压力测试的一个非常简单的工具,它最多可以模拟30000个并发连接去进行测试. webbench的安装和使用可以自行百度,也可以过下这篇文章. ...

  10. 多个div嵌套,获取鼠标所点击的div对象

    我选择的是冒泡事件 $(function() { $("#主divID").on("click",function(e) {//主div是必须存在的 //冒泡事 ...