HDU-1698Just a Hook-线段树成段更新
来源:互联网 发布:软件测试 培训 编辑:程序博客网 时间:2024/06/07 07:46
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;struct s{ int i,j,k,sum;}a[411111];void pushdown(int r,int m){ if(a[r].k) { int k=a[r].k; a[r<<1].k=a[r<<1|1].k=k; a[r<<1].sum=k*(m-m/2); a[r<<1|1].sum=k*(m/2); a[r].k=0; }}void build(int r,int i,int j){ a[r].i=i; a[r].j=j; a[r].k=0; a[r].sum=1; if(i==j) { return ; } int k=(i+j)/2; build(r<<1,i,k); build(r<<1|1,k+1,j); a[r].sum=a[r<<1].sum+a[r<<1|1].sum;}void update(int r,int i,int j,int value){ if(a[r].i>=i&&a[r].j<=j) { a[r].k=value; a[r].sum=value*(a[r].j-a[r].i+1); return ; } pushdown(r,a[r].j-a[r].i+1); int k=(a[r].i+a[r].j)/2; if(j<=k) update(r<<1,i,j,value); else if(i>k) update(r<<1|1,i,j,value); else { update(r<<1,i,j,value); update(r<<1|1,i,j,value); } a[r].sum=a[r<<1].sum+a[r<<1|1].sum;}int query(int r,int i,int j){ if(a[r].i>=i&&a[r].j<=j) { return a[r].sum; } pushdown(r,a[r].j-a[r].i+1); int k=(a[r].i+a[r].j)/2; if(j<=k) return query(r<<1,i,j); else if(i>k) return query(r<<1|1,i,j); return query(r<<1,i,j)+query(r<<1|1,i,j);}int main() { int T , n , m; scanf("%d",&T); for (int cas = 1 ; cas <= T ; cas ++) { scanf("%d%d",&n,&m); build(1 , 1 , n); while (m --) { int a , b , c; scanf("%d%d%d",&a,&b,&c); update(1,a,b,c); } printf("Case %d: The total value of the hook is %d.\n",cas , query(1,1,n)); } return 0;}
0 0
- HDU 1698 线段树成段更新 Just a Hook
- hdu 1698 Just a Hook 线段树成段更新
- HDU 1698 Just a Hook / 线段树成段更新
- HDU-1698 Just a Hook 线段树成段更新
- HDU 1698 Just a Hook,线段树成段更新
- hdu 1698 Just a Hook 线段树成段更新
- HDU 1698 Just a Hook(线段树成段更新求和)
- HDU 1698 Just a Hook(线段树成段更新)
- HDU 1698 Just a Hook(线段树成段更新)
- HDU 1698 Just a Hook(线段树成段更新)
- 线段树成段更新 hdu 1698 Just a Hook
- hdu 1698 Just a Hook(线段树成段更新lazy)
- HDU 1698 Just a Hook 线段树成段更新
- HDU-1698Just a Hook-线段树成段更新
- hdu Just a Hook 线段树成段更新.cpp
- HDU 1698 Just a Hook [线段树-成段更新]
- HDU 1698 Just a Hook 线段树区间更新
- hdu 1698 Just a Hook(线段树 成段更新)
- Function Run Fun
- 枚举
- 面向对象编程三大特性之一--封装
- 二叉树入门
- Android应用程序窗口View的draw过程
- HDU-1698Just a Hook-线段树成段更新
- Codeforces Round #363 (Div. 2)B One Bomb
- <C++略识>之构造函数及初始化列表
- hdoj 1166 敌兵布阵
- Android Support库——support annotations
- modelsim与debussy联调环境的搭建
- 直观解释 稀疏傅里叶变换
- iOS开发UI篇-CALayer创建图层
- 序列化格式