博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CodeForces】915 E. Physical Education Lessons 线段树
阅读量:7171 次
发布时间:2019-06-29

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

【题目】

【题意】10^9范围的区间覆盖,至多3*10^5次区间询问。

【算法】线段树

【题解】每次询问至多增加两段区间,提前括号分段后线段树。

#include
#include
#include
#include
using namespace std;int read(){ char c;int s=0,t=1; while(!isdigit(c=getchar()))if(c=='-')t=-1; do{s=s*10+c-'0';}while(isdigit(c=getchar())); return s*t;}const int maxn=1000010;struct tree{
int l,r,delta,sum,p;}t[maxn*4];//int au[maxn],av[maxn],k[maxn],a[maxn],n,q,tot;set
s;void build(int k,int l,int r){ t[k].l=l;t[k].r=r;t[k].delta=-1; if(l==r){t[k].p=t[k].sum=a[l]-a[l-1];return;} int mid=(l+r)>>1; build(k<<1,l,mid);build(k<<1|1,mid+1,r); t[k].p=t[k<<1].p+t[k<<1|1].p; t[k].sum=t[k<<1].sum+t[k<<1|1].sum;}void modify(int k,int x){t[k].sum=t[k].p*x;t[k].delta=x;}void down(int k){ if(~t[k].delta){ modify(k<<1,t[k].delta);modify(k<<1|1,t[k].delta); t[k].delta=-1; }}void up(int k){t[k].sum=t[k<<1].sum+t[k<<1|1].sum;}void cover(int k,int l,int r,int x){ if(l<=t[k].l&&t[k].r<=r){modify(k,x);return;} down(k); int mid=(t[k].l+t[k].r)>>1; if(l<=mid)cover(k<<1,l,r,x); if(r>mid)cover(k<<1|1,l,r,x); up(k);}int main(){ n=read();q=read(); for(int i=1;i<=q;i++){ au[i]=read();av[i]=read();k[i]=read(); s.insert(au[i]-1);s.insert(av[i]); } if(*s.begin()==0)s.erase(s.begin()); s.insert(n); for(set
::iterator it=s.begin();it!=s.end();it++){ a[++tot]=*it; } for(int i=1;i<=q;i++){ au[i]=lower_bound(a+1,a+tot+1,au[i])-a; av[i]=lower_bound(a+1,a+tot+1,av[i])-a; } n=tot; build(1,1,n); for(int i=1;i<=q;i++){ cover(1,au[i],av[i],k[i]-1); printf("%d\n",t[1].sum); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/8287658.html

你可能感兴趣的文章
3DTouch学习笔记
查看>>
Linux下 vi 操作Found a swap file by the name
查看>>
filebeat 插件开发
查看>>
网络基础
查看>>
技术加油站:5月19日,技术大佬等你来撩
查看>>
supervisor配置详解(转)
查看>>
Confluence 6 Microsoft SQL Server 设置准备
查看>>
Nginx.conf配置文件
查看>>
EI检索期刊JA检索与CA检索有什么区别?
查看>>
shell脚本基础
查看>>
论定额成本控制和精益成本法在公路养护工程中的应用
查看>>
人脸识别技术探讨:1:1,1:小N/大N,大姿态识别,活体识别
查看>>
面向对象程序设计
查看>>
非主从同步 mysql master slave pt-slave-delay
查看>>
【思科×××】IPsec ×××基本部署
查看>>
SpringFramework之mvc controller的单元测试
查看>>
检验新买内存条的真假
查看>>
解密:华为的敏捷网络是SDN吗
查看>>
u16 u32 __u16 __u32 u_int16_t u_int32_t
查看>>
android: BaseAdapter和ListView简单运用(08)
查看>>