●洛谷P3168 [CQOI2015]任务查询系统
题链:
https://www.luogu.org/problemnew/show/P3168
题解:
主席树
强制在线?
那就直接对每一个前缀时间建一个线段树(可持久化线段树),线段树维护优先度权值。
代码:
#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
int tmp[MAXN];
int N,M,tnt;
long long pre=1;
struct Event{int ent;int p[MAXN*2],k[MAXN*2],nxt[MAXN*2],head[MAXN];Event():ent(2){}void Add(int _t,int _p,int _k){p[ent]=_p; k[ent]=_k; nxt[ent]=head[_t]; head[_t]=ent++;}
}E;
struct SGT{//可持久化线段树(主席树),单修,区查??? int idnt,root[MAXN];int ls[MAXN*18*2],rs[MAXN*18*2],size[MAXN*18*2];long long sum[MAXN*18*2];void Pushup(int u){size[u]=size[ls[u]]+size[rs[u]];sum[u]=sum[ls[u]]+sum[rs[u]];}void Modify(int v,int &u,int l,int r,int p,int k){u=++idnt; ls[u]=ls[v]; rs[u]=rs[v]; sum[u]=sum[v]; size[u]=size[v];if(l==r) return (void)(sum[u]+=k*tmp[l],size[u]+=k);int mid=(l+r)>>1;if(p<=mid) Modify(ls[v],ls[u],l,mid,p,k);else Modify(rs[v],rs[u],mid+1,r,p,k);Pushup(u);}long long Query(int u,int l,int r,int k){//先特判k是否太大 if(l==r){return 1ll*k*tmp[l];}int mid=(l+r)>>1;if(size[ls[u]]>=k) return Query(ls[u],l,mid,k);long long ret=sum[ls[u]];ret+=Query(rs[u],mid+1,r,k-size[ls[u]]);return ret;}
}DT;
int main(){scanf("%d%d",&M,&N);int a,b,c,x,k;for(int i=1;i<=M;i++){scanf("%d%d%d",&a,&b,&c);E.Add(a,c,1); E.Add(b+1,c,-1);tmp[++tnt]=c;}sort(tmp+1,tmp+tnt+1);tnt=unique(tmp+1,tmp+tnt+1)-tmp-1;for(int i=1,last=0;i<=N;i++){DT.root[i]=last;for(int e=E.head[i];e;e=E.nxt[e]){E.p[e]=lower_bound(tmp+1,tmp+tnt+1,E.p[e])-tmp;DT.Modify(last,DT.root[i],1,tnt,E.p[e],E.k[e]);last=DT.root[i];}}for(int i=1;i<=N;i++){scanf("%d%d%d%d",&x,&a,&b,&c);k=1+(a*pre+b)%c;//*/scanf("%d%d",&x,&k);if(DT.size[DT.root[x]]<=k) pre=DT.sum[DT.root[x]];else pre=DT.Query(DT.root[x],1,tnt,k);printf("%lld\n",pre);}return 0;
}
转载于:https://www.cnblogs.com/zj75211/p/8541667.html
●洛谷P3168 [CQOI2015]任务查询系统相关推荐
- 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]
题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...
- P3168 [CQOI2015]任务查询系统 差分+主席树
链接在这~:https://www.luogu.org/problem/P3168 主席静态区间修改,单点查询 区间(L,R)加1可以通过差分以后转换为L位置加1,R+1位置减1 我们只需要记录一下, ...
- P3168 [CQOI2015]任务查询系统 主席树 + 差分
传送门 题意: 思路: 题目中(si,ei,pi)(s_i,e_i,p_i)(si,ei,pi)转换成操作即为在[si,ei][s_i,e_i][si,ei]区间内加上pip_ipi的优先 ...
- 【BZOJ3932】[CQOI2015]任务查询系统 主席树
[BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...
- Bzoj 3932: [CQOI2015]任务查询系统(主席树)
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管理 ...
- AC日记——任务查询系统 洛谷 P3168
题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...
- [CQOI2015]任务查询系统
题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...
- [CQOI2015]任务查询系统(差分+主席树)
链接:https://ac.nowcoder.com/acm/problem/19936 来源:牛客网 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. ...
- CQOI2015 任务查询系统
传送门 又是一句经常见到的话--做完这题对主席树的理解会更好一些-- 这道题把普通的主席树单点修改区间查询改成了区间修改单点查询.这个的话我们可以改成差分解决--把一个操作改成两个,然后把所有操作按照 ...
最新文章
- 为什么 M1 和 Mac 是绝配?
- 混迹网络运营多年经验之谈
- Spring Boot怎么样处理静态资源(静态资源映射规则)_Web开发
- C语言0xc0000142错误,第一次用c++编译器出现奇怪的报错
- 八千字硬核长文梳理Linux内核概念及学习路线
- diff git 指定时间,git diff日期?
- matlab 写excel 慢_我在12w+的Python库中,发现了让Excel快到起飞的秘密......
- 10.11 安装pod
- 解析应用结构,优化网络效能
- python设置label的位置_Python3 tkinter基础 Label pack 设置控件在窗体中的位置
- (13)ISE14.7bit文件生成mcs文件(FPGA不积跬步101)
- 初识FL Studio中的FLEX插件
- 一张图读懂“云栖大会·武汉峰会”发布的阿里云AI产品体系
- H3CSE园区-NTP
- 增强型绿植植被指数_植被指数计算方法
- 电脑朋友圈,PC玩朋友圈,真的来了
- Springboot 使用restTemplate 进行跨域请求 response reqeust中首字母大写的问题
- python怎么求幂_比较各种Python求幂方法的性能
- 实现圆形头像(并且不管图大小都显示成固定尺寸)-和上一篇有点不同。
- Quorum (分布式系统)