博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-1698-Just a Hook
阅读量:6202 次
发布时间:2019-06-21

本文共 2130 字,大约阅读时间需要 7 分钟。

链接:https://vjudge.net/problem/HDU-1698#author=0

题意:

给n个数,默认为1,q次操作,将x-y内的数改成1-3中的一种。

求n个数的和。

思路:

线段树,区间更新。

代码:

#include 
#include
#include
#include
#include
using namespace std;typedef long long LL;const int MAXN = 1e5 + 10;int segments[MAXN * 4];int add[MAXN * 4];void Push_down(int root, int l, int r){ if (add[root]) { add[root << 1] = add[root]; add[root << 1 | 1] = add[root]; int mid = (l + r) / 2; segments[root << 1] = add[root] * (mid - l + 1); segments[root << 1 | 1] = add[root] * (r - mid); add[root] = 0; }}void Build_tree(int root, int l, int r){ if (l == r) { segments[root] = 1; return ; } int mid = (l + r) / 2; Build_tree(root << 1, l, mid); Build_tree(root << 1 | 1, mid + 1, r); segments[root] = segments[root << 1] + segments[root << 1 | 1];}void Update_tree(int root, int l, int r, int ql, int qr, int c){ if (ql > r || qr < l) return ; if (ql <= l && r <= qr) { segments[root] = (r - l + 1) * c; add[root] = c; } else { Push_down(root, l, r); int mid = (l + r) / 2; Update_tree(root << 1, l, mid, ql, qr, c); Update_tree(root << 1 | 1, mid + 1, r, ql, qr, c); segments[root] = segments[root << 1] + segments[root << 1 | 1]; }}int Query(int root, int l, int r, int w){ if (l == r) return segments[root]; int mid = (l + r) / 2; if (w <= mid) return Query(root << 1, l, mid, w); else return Query(root << 1 | 1, mid + 1, r, w);}int main(){ int t, cnt = 0; scanf("%d", &t); while (t--) { int n, q; int l, r, op; scanf("%d%d", &n, &q); Build_tree(1, 1, n); memset(add, 0, sizeof(add)); for (int i = 1;i <= q;i++) { scanf("%d%d%d", &l, &r, &op); Update_tree(1, 1, n, l, r, op); } printf("Case %d: The total value of the hook is %d.\n", ++cnt, segments[1]); } return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10426662.html

你可能感兴趣的文章
Python自定义函数、模块
查看>>
微软宣布.NET开源!支持Mac OS X和Linux
查看>>
nagios自动安装脚本
查看>>
CloudFoundry 快速上手笔记
查看>>
Using Eclipse With CloudStack
查看>>
启用logcat日志
查看>>
我的友情链接
查看>>
数据的存储介质-磁盘的硬件特性
查看>>
如何做成功的市场调研(上)含前言
查看>>
我的友情链接
查看>>
数据分析图表
查看>>
企业展览设计原则
查看>>
如何通过vSphere客户端打开Linux控制台显示中文
查看>>
Python中各进制转换
查看>>
Win7 的安全快捷键使用技巧
查看>>
同源策略—web构建的基础
查看>>
Proxool数据源在Spring中的配置
查看>>
20145328《信息安全系统设计基础》实验一 开发环境的熟悉
查看>>
Eclipse高亮相同变量
查看>>
centos vsftpd 三种配置 匿名 本地 虚拟
查看>>