hdu1198 Just a Hook 线段树区间赋值
来源:互联网 发布:软件性能测试报告实例 编辑:程序博客网 时间:2024/05/19 21:00
继续补线段树>_<。一句话题意:多组数据,区间赋值修改,最后求总和。线段树lazy tag直接上:
AC代码如下:
#include<iostream>#include<cstdio>#include<cstring>#define N 500005using namespace std;int n,m,c[N][2],sum[N],val[N];int read(){int x=0; char ch=getchar();while (ch<'0' || ch>'9') ch=getchar();while (ch>='0' && ch<='9'){ x=x*10+ch-'0'; ch=getchar(); }return x;}void pushdown(int k){if (val[k]!=-1){int l=c[k][0],r=c[k][1],mid=(l+r)>>1;val[k<<1]=val[k<<1|1]=val[k];sum[k<<1]=val[k]*(mid-l+1); sum[k<<1|1]=val[k]*(r-mid);val[k]=-1;}}void build(int k,int x,int y){c[k][0]=x; c[k][1]=y; val[k]=-1;if (x==y){ sum[k]=1; return; }int mid=(x+y)>>1; build(k<<1,x,mid); build(k<<1|1,mid+1,y);sum[k]=sum[k<<1]+sum[k<<1|1];}void mdy(int k,int x,int y,int v){int l=c[k][0],r=c[k][1],mid=(l+r)>>1;if (x==l && y==r){val[k]=v; sum[k]=v*(r-l+1); return;}pushdown(k);if (y<=mid) mdy(k<<1,x,y,v); elseif (x>mid) mdy(k<<1|1,x,y,v); else{mdy(k<<1,x,mid,v); mdy(k<<1|1,mid+1,y,v);}sum[k]=sum[k<<1]+sum[k<<1|1];}int main(){int cas=read(),ri;for (ri=1; ri<=cas; ri++){n=read(); m=read(); build(1,1,n);while (m--){int x=read(),y=read(),z=read();mdy(1,x,y,z);}printf("Case %d: The total value of the hook is %d.\n",ri,sum[1]);}return 0;}
by lych
2016.1.9
1 0
- hdu1198 Just a Hook 线段树区间赋值
- Just a Hook(线段树区间更新)
- 线段树区间更新 Just a Hook
- Just a Hook ---线段树区间更新
- Just a Hook ,线段树,区间更新 ,区间求和
- HDU 1698 Just a Hook 线段树区间更新
- hdu 1698 Just a Hook (线段树区间操作,)
- HDU1698--Just a hook--线段树区间更新
- 线段树(区间更新) hdu-1698-Just a Hook
- hdu 1698(区间更新线段树)Just a Hook
- 线段树 1698 Just a Hook 区间set更新
- hdu 1698 Just a Hook(线段树-区间更新)
- HDU1698:Just a Hook(线段树区间更新)
- 1698 Just a Hook 线段树区间更新
- hdu 1698 Just a Hook 线段树区间更新
- Just a Hook +线段树区间更新模板题
- HDU 1698 Just A Hook (线段树,区间修改)
- HDU - 1698 Just a Hook (线段树区间修改)
- 【转】C/C++中extern关键字详解
- R 语言绘图005-函数par()详解
- CDI进阶第一步 CDI拦截器
- Android中插件开发篇之----应用换肤原理解析
- Maven学习总结(14)——Maven 多模块项目如何分工?
- hdu1198 Just a Hook 线段树区间赋值
- Eclips 开发 apk 使用android内部(com.android.internal) API
- 简单图像运算
- 在WEB项目中调用QQ通讯组件打开QQ聊天界面
- linux split命令切分大文件
- LinkedIn是如何优化Kafka的
- Binder与Service 通信机制详解四 (源码分析AIDL工作机制)
- Android如何缩放应用中的字体大小
- C++ 值传递、指针传递、引用传递详解