hdu 1698 线段树成段更新
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <queue>
#include <vector> #define maxn 130050
#define lson l,mid,u<<1
#define rson mid+1,r,u<<1|1
using namespace std; const int INF = 0x3f3f3f; int seg[maxn<<];
int pau[maxn<<]; void Push_UP(int u){
seg[u] =seg[u<<] + seg[u<<|];
}
void Push_Down(int l,int r,int u){
if(pau[u]){
int mid = (l + r)/;
pau[u<<] = pau[u<<|] = pau[u];
seg[u<<] = (mid - l + ) * pau[u];
seg[u<<|] = (r - mid) * pau[u];
pau[u] = ;
}
}
void build(int l,int r,int u){
if(l == r){
seg[u] = ;
return;
}
int mid = (l + r)/;
build(lson);
build(rson);
Push_UP(u);
}
void Update(int L,int R,int num,int l,int r,int u){
if(L <= l && r <= R){ // 这个地方要注意!!
pau[u] = num;
seg[u] = num * (r - l + );
return;
}
Push_Down(l,r,u);
int mid = (l + r)/;
if(L <= mid) Update(L,R,num,lson);
if(R > mid) Update(L,R,num,rson);
Push_UP(u);
} int main()
{
if(freopen("input.txt","r",stdin)== NULL) {printf("Error\n"); exit();}
int T;
cin>>T;
for(int t=;t<=T;t++){
int N,Q;
cin>>N;
build(,N,);
cin>>Q;
memset(pau,,sizeof(pau));
while(Q--){
int X,Y,Z;
scanf("%d%d%d",&X,&Y,&Z);
Update(X,Y,Z,,N,);
}
printf("Case %d: The total value of the hook is %d.\n",t,seg[]);
}
}
hdu 1698 线段树成段更新的更多相关文章
- hdu 1698 线段树 成段更新
题意:一段钩子,每个钩子的值为1,有若干更新,每次跟新某段的值,若干查询某段的和 基础题了 #include<cstdio> #include<iostream> #inclu ...
- hdu 4747【线段树-成段更新】.cpp
题意: 给出一个有n个数的数列,并定义mex(l, r)表示数列中第l个元素到第r个元素中第一个没有出现的最小非负整数. 求出这个数列中所有mex的值. 思路: 可以看出对于一个数列,mex(r, r ...
- HDU 3577 Fast Arrangement ( 线段树 成段更新 区间最值 区间最大覆盖次数 )
线段树成段更新+区间最值. 注意某人的乘车区间是[a, b-1],因为他在b站就下车了. #include <cstdio> #include <cstring> #inclu ...
- ACM: Copying Data 线段树-成段更新-解题报告
Copying Data Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description W ...
- Codeforces Round #149 (Div. 2) E. XOR on Segment (线段树成段更新+二进制)
题目链接:http://codeforces.com/problemset/problem/242/E 给你n个数,m个操作,操作1是查询l到r之间的和,操作2是将l到r之间的每个数xor与x. 这题 ...
- POJ 2777 Count Color (线段树成段更新+二进制思维)
题目链接:http://poj.org/problem?id=2777 题意是有L个单位长的画板,T种颜色,O个操作.画板初始化为颜色1.操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位之间的 ...
- HDU1698_Just a Hook(线段树/成段更新)
解题报告 题意: 原本区间1到n都是1,区间成段改变成一个值,求最后区间1到n的和. 思路: 线段树成段更新,区间去和. #include <iostream> #include < ...
- poj 3468 A Simple Problem with Integers 【线段树-成段更新】
题目:id=3468" target="_blank">poj 3468 A Simple Problem with Integers 题意:给出n个数.两种操作 ...
- POJ3468_A Simple Problem with Integers(线段树/成段更新)
解题报告 题意: 略 思路: 线段树成段更新,区间求和. #include <iostream> #include <cstring> #include <cstdio& ...
随机推荐
- oracle中获取特定时间的前一天
select to_char(to_date('@rq','YYYY-MM-DD')-1,'YYYY-MM-DD') FROM DUAL 把@rq换成你要的时间就行了
- Xcode7插件开发:从开发到拉到恶魔岛
Xcode很强大,但是有些封闭,官方并没有提供Xcode插件开发的文档.喵神的教程比较全,也比较适合入门.本文的教程只是作为我在开发FKConsole的过程中的总结,并不会很全面. FKConsole ...
- os项目icon和default 等相关图标命名规则和大小设置
最新的参考apple官网地址:https://developer.apple.com/library/ios/qa/qa1686/_index.html,网页下面有详细的使用方法(ios7以后的) 转 ...
- OC - 19.GCD
简介 GCD(Grand Center Dispatch)是Apple为多核的并行运算提出的解决方案,纯C语言 更加适配多核处理器,且自动管理线程的生命周期,使用起来较为方便 GCD通过任务和队列实现 ...
- (java)从零开始之--观察者设计模式Observer
观察者设计模式:时当一个对象发生指定的动作时,要通过另外的对象做出相应的处理. 步骤: 1. A对象发生指定的动作是,要通知B,C,D...对象做出相应的处理,这时候应该把B,C,D...对象针对A对 ...
- gvim 常用命令
插入: insert 强退: :q! 退出: :q 保存: :w 保存退出::wq 复制: yy(单行) 多行:8yy 删除: dd(单行) 多行:8dd 或者 :4,8d 执行脚本: :! ...
- wordpress version
version info /readme.html /wp-includes/version.php remove copyright 1.wp-login.php //<h1><a ...
- GRUB配置
参数讲解: default :定义缺省启动的系统 如果安装多系统的话 会有多个title 信息 可以通过设置 default: 来改变启动那个系统 默认第一个为0 第二个为1 依次类推 timeout ...
- <和>
今天用到>查了查资料就是这么个回事.
- ng-class css样式
<style> .error{background-color: red;} .warning{background-color: yellow;} </style> < ...