【CQOI2015】任务查询系统 主席树模板题
来源:互联网 发布:汽车设计软件下载 编辑:程序博客网 时间:2024/05/16 14:40
Description
Input
Output
n个整数表示答案
Sample Input
4 3
1 2 6
2 3 3
1 3 2
3 3 4
3 1 3 2
1 1 3 4
2 2 4 3
Sample Output
2
8
11
Data Constraint
Solution
由于优先级比较大,需要离散化
如果不强制在线,只需将询问按时间排序维护一个权值线段树即可
维护时枚举时刻,在一个任务开始的时刻,将这个任务的优先级加入线段树中然后询问,然后将在这个时刻结束的任务从线段树中删去
而强制在线就只需对于每个时刻开一棵权值线段树,维护的方法和上面相同
由于时刻很多,用主席树来维护就可以避免空间超限
当做主席树模板题
Code
#include<cstdio>#include<cstring>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define N 101000#define ll long longusing namespace std;struct node{ int x,y,z;}a[N],b[N];struct note{ int l,r; ll d1,d2;}t[N*100];int m,n,r[N],tot=0,nn=0;ll hy[N];bool cnt(node x,node y){return x.x<y.x;}bool cmt(node x,node y){return x.z<y.z;}void insert(int v,int i,int j,int x,ll y){ t[v].d1+=y;t[v].d2+=y*hy[x];if(i==j) return; int m=(i+j)/2; if(x<=m) t[++tot]=t[t[v].l],t[v].l=tot,insert(t[v].l,i,m,x,y); else t[++tot]=t[t[v].r],t[v].r=tot,insert(t[v].r,m+1,j,x,y);}ll get(int v,int k){ if(k==0) return 0; if(v==0) return 0; if(t[t[v].l].d1==k) return t[t[v].l].d2; if(t[t[v].l].d1>k) return get(t[v].l,k); else return t[t[v].l].d2+get(t[v].r,k-t[t[v].l].d1);}int main(){ freopen("query.in","r",stdin); freopen("query.out","w",stdout); scanf("%d%d",&m,&n); fo(i,1,m) scanf("%d%d%d",&b[i].x,&b[i].y,&b[i].z); //------离散化 { sort(b+1,b+m+1,cmt); fo(i,1,m) hy[++nn]=b[i].z,b[i].z=nn; fo(i,1,m) { a[i*2-1].x=b[i].x;a[i*2-1].y=1;a[i*2-1].z=b[i].z; a[i*2].x=b[i].y+1;a[i*2].y=-1;a[i*2].z=b[i].z; } } //------预处理 { sort(a+1,a+m+m+1,cnt); int j=1; fo(i,1,n+1) { r[i]=++tot;t[r[i]]=t[r[i-1]]; for(;a[j].x==i;j++) insert(r[i],1,nn,a[j].z,a[j].y); } } //------query ll ans=1; fo(i,1,n) { int x;ll jy1,jy2,jy3;scanf("%d%lld%lld%lld",&x,&jy1,&jy2,&jy3); ll k=(jy1*ans+jy2)%jy3+1; if(t[r[x]].d1<=k) ans=t[r[x]].d2; else ans=get(r[x],k); printf("%lld\n",ans); }}
0 0
- 【CQOI2015】任务查询系统 主席树模板题
- [BZOJ3932]CQOI2015任务查询系统|主席树
- bzoj3932: [CQOI2015]任务查询系统 主席树
- BZOJ3932: [CQOI2015]任务查询系统 主席树
- [BZOJ3932][CQOI2015]任务查询系统 主席树
- [CQOI2015]任务查询系统 主席树
- [主席树] BZOJ 3932 [CQOI2015]任务查询系统
- 【BZOJ 3932】[CQOI2015]任务查询系统 主席树
- Bzoj 3932: [CQOI2015]任务查询系统(主席树)
- bzoj 3932 [CQOI2015]任务查询系统 主席树
- bzoj 3932: [CQOI2015]任务查询系统(主席树)
- [BZOJ3932][CQOI2015]任务查询系统(主席树||树状数组套主席树)
- NKOJ3251 (CQOI2015) 任务查询系统(差分数组,主席树)
- [CQOI2015]任务查询系统
- BZOJ3932: [CQOI2015]任务查询系统
- bzoj3932【CQOI2015】任务查询系统
- 3932: [CQOI2015]任务查询系统
- 【bzoj3932】[CQOI2015]任务查询系统
- JS:正则表达式学习笔记(八) - 前瞻
- log4j配置详解
- 第十一章 持有对象
- pwnable.kr-cmd1-Writeup
- ubuntu14.04 sqlite3 及可视化工具安装
- 【CQOI2015】任务查询系统 主席树模板题
- ubuntu16.04 arm-linux-gcc环境搭建之不是有效的标识符
- (Ryan的Redis系列博客)0.Redis系列文章的博客写作计划
- 阿里Redis Java客户端Tedis
- 路由策略和策略路由配置与管理-1
- (Ryan的Redis系列博客)1.开源协议
- Party Lamps POJ - 1176
- R语言 我要如何开始R语言
- sysklog 升级为rsyslog