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

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

线段树,懒惰标记

1 #include 
2 #include
3 using namespace std; 4 #define N 400010 5 int sum[N],lazy[N]; 6 void pushup(int root){ 7 sum[root]=sum[root*2]+sum[root*2+1]; 8 } 9 void pushdown(int root,int x){10 if(lazy[root] != -1) {11 lazy[root*2] = lazy[root*2+1] = lazy[root];12 sum[root*2]=(x-x/2)*lazy[root];13 sum[root*2+1]=x/2*lazy[root];14 lazy[root]=-1;15 }16 }17 void build(int l,int r,int root){18 lazy[root]=-1,sum[root]=1;19 if(l==r)return ;20 int mid=(l+r)/2;21 build(l,mid,root*2);22 build(mid+1,r,root*2+1);23 pushup(root);24 }25 26 void query(int x,int y,int l,int r,int root,int a){27 if(x<=l&&y>=r){28 lazy[root] = a;29 sum[root] = a*(r-l+1);30 return;31 }32 pushdown(root,r-l+1);33 int mid=(r+l)/2;34 if(x<=mid)query(x,y,l,mid,root*2,a);35 if(y>mid)query(x,y,mid+1,r,root*2+1,a);36 pushup(root);37 }38 int main(){39 //freopen("test.txt","r",stdin);40 int t,n,q,x,y,z,case1=0;41 scanf("%d",&t);42 while(t--){43 case1++;44 scanf("%d%d",&n,&q);45 build(1,n,1);46 for(int i=0;i

 

转载于:https://www.cnblogs.com/Mr-Xu-JH/p/3880600.html

你可能感兴趣的文章
【数据结构】栈结构操作示例
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
关于View控件中的Context选择
查看>>