题链:

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]任务查询系统相关推荐

  1. 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]

    题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...

  2. P3168 [CQOI2015]任务查询系统 差分+主席树

    链接在这~:https://www.luogu.org/problem/P3168 主席静态区间修改,单点查询 区间(L,R)加1可以通过差分以后转换为L位置加1,R+1位置减1 我们只需要记录一下, ...

  3. P3168 [CQOI2015]任务查询系统 主席树 + 差分

    传送门 题意: 思路: 题目中(si,ei,pi)(s_i,e_i,p_i)(si​,ei​,pi​)转换成操作即为在[si,ei][s_i,e_i][si​,ei​]区间内加上pip_ipi​的优先 ...

  4. 【BZOJ3932】[CQOI2015]任务查询系统 主席树

    [BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...

  5. Bzoj 3932: [CQOI2015]任务查询系统(主席树)

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管理 ...

  6. AC日记——任务查询系统 洛谷 P3168

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  7. [CQOI2015]任务查询系统

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  8. [CQOI2015]任务查询系统(差分+主席树)

    链接:https://ac.nowcoder.com/acm/problem/19936 来源:牛客网 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. ...

  9. CQOI2015 任务查询系统

    传送门 又是一句经常见到的话--做完这题对主席树的理解会更好一些-- 这道题把普通的主席树单点修改区间查询改成了区间修改单点查询.这个的话我们可以改成差分解决--把一个操作改成两个,然后把所有操作按照 ...

最新文章

  1. 为什么 M1 和 Mac 是绝配?
  2. 混迹网络运营多年经验之谈
  3. Spring Boot怎么样处理静态资源(静态资源映射规则)_Web开发
  4. C语言0xc0000142错误,第一次用c++编译器出现奇怪的报错
  5. 八千字硬核长文梳理Linux内核概念及学习路线
  6. diff git 指定时间,git diff日期?
  7. matlab 写excel 慢_我在12w+的Python库中,发现了让Excel快到起飞的秘密......
  8. 10.11 安装pod
  9. 解析应用结构,优化网络效能
  10. python设置label的位置_Python3 tkinter基础 Label pack 设置控件在窗体中的位置
  11. (13)ISE14.7bit文件生成mcs文件(FPGA不积跬步101)
  12. 初识FL Studio中的FLEX插件
  13. 一张图读懂“云栖大会·武汉峰会”发布的阿里云AI产品体系
  14. H3CSE园区-NTP
  15. 增强型绿植植被指数_植被指数计算方法
  16. 电脑朋友圈,PC玩朋友圈,真的来了
  17. Springboot 使用restTemplate 进行跨域请求 response reqeust中首字母大写的问题
  18. python怎么求幂_比较各种Python求幂方法的性能
  19. 实现圆形头像(并且不管图大小都显示成固定尺寸)-和上一篇有点不同。
  20. Quorum (分布式系统)

热门文章

  1. 小裁缝返乡创业做儿童品牌,如今身家数十亿冲刺上市
  2. #HTTP协议学习# (八)拓展-HTTPS协议
  3. Linux 创建、删除、修改 文件夹 文件命令(笔记)
  4. IAR编译器的常见问题
  5. pytest架构 python_Pytest+Allure接口自动化
  6. 数据库表的软硬关联_数据库软删除和硬删除
  7. MATLAB2013a的license过期的解决办法
  8. 在redhat9上安装firefox
  9. 虚拟机上Redhat linux9.0的VMware Tools详细图文教程
  10. vscode教程笔记