HDU 1698 线段树成段更新
来源:互联网 发布:js强制弹窗 编辑:程序博客网 时间:2024/05/23 10:36
点击打开链接
题意:给你T组数据,每组N个数,初始为1,M个操作,每个操作将区间a到b的值更新为才,问n个数的和。
思路:简单的线段树成段更新,需要用到懒惰标记,说白了懒惰标记就是用到的时候再去更新它,不然就放在那里
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>using namespace std;const int inf=0x3f3f3f3f;const int maxn=1e5+10;typedef long long ll;#define mm(a) memset(a,0,sizeof(a))int num[maxn<<2],num1[maxn<<2];void pushup(int node){ num[node]=num[node<<1]+num[node<<1|1];}void pushdown(int node,int node1){ if(num1[node]){ int t=num1[node]; num1[node<<1]=t; num1[node<<1|1]=t; num[node<<1]=(node1-(node1>>1))*t; num[node<<1|1]=(node1>>1)*t; num1[node]=0; }}void buildtree(int le,int ri,int node){ if(le==ri){ num[node]=1; return ; } int t=(le+ri)>>1; buildtree(le,t,node<<1); buildtree(t+1,ri,node<<1|1); pushup(node);}void update(int l,int r,int add,int le,int ri,int node){ if(l<=le&&ri<=r){ num1[node]=add; num[node]=add*(ri-le+1); return ; } pushdown(node,ri-le+1); int t=(le+ri)>>1; if(l<=t) update(l,r,add,le,t,node<<1); if(r>t) update(l,r,add,t+1,ri,node<<1|1); pushup(node);}int main(){ int T,t=1,n,m; scanf("%d",&T); while(T--){ mm(num1); scanf("%d%d",&n,&m); int a,b,c; buildtree(1,n,1); while(m--){ scanf("%d%d%d",&a,&b,&c); update(a,b,c,1,n,1);// for(int i=1;i<=4*n;i++)// cout<<num[i]<<" ";// cout<<endl; } printf("Case %d: The total value of the hook is %d.\n",t++,num[1]); } return 0;}
0 0
- HDU 1698 线段树成段更新
- hdu 1698 线段树成段更新
- HDU 1698线段树成段更新
- HDU 1698 线段树成段更新
- hdu 1698 线段树成段更新简单题。
- HDU 1698 线段树成段更新模板
- hdu 3397 线段树成段更新
- 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 屠夫(线段树成段更新大大大水题)
- HDU 1698 Just a Hook(线段树成段更新)
- HDU 1698 Just a Hook(线段树成段更新)
- c#webservice的简单示例
- 设计模式笔记
- PAT Basic level practise 1002
- Android千变万化TextView(SpannableString全解析)
- hadoop的log日志查错
- HDU 1698 线段树成段更新
- js笔记
- bbs 网站开发中常见前端问题及解决
- Intent 进行activity 与activity之间的传值
- 大家陪我一起学Android之电话拨打器
- DataBinding学习(三)
- 数独
- Android笔记
- java 实现给定一个excel表中的列标题,返回相应的行号