题目


分析

询问显然得预处理,考虑以优先级建权值线段树,

将优先级离散化处理,那么第\(k\)大可以用线段树来求

那任务怎么办,考虑时间用扫描线的方法,按照时间建新的线段树

把任务分成两部分,在两端差分,实际上每次修改只会修改一小部分,

所以用主席树做,空间复杂度就能得到保证


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
typedef long long lll;
const int N=100011;
int n,m,T,b[N],rt[N];
struct rec{int x,p;}a[N<<1];
struct Chair{
lll ww[N<<6],wc[N<<6];
int ls[N<<6],rs[N<<6],cnt;
inline void build(int &rt,int l,int r){
rt=++cnt,ww[rt]=wc[rt]=0;
if (l==r) return;
rr int mid=(l+r)>>1;
build(ls[rt],l,mid);
build(rs[rt],mid+1,r);
}
inline void update(int &rt,int l,int r,int x,int z){
rr int trt=++cnt;
ls[trt]=ls[rt],rs[trt]=rs[rt],
ww[trt]=ww[rt],wc[trt]=wc[rt],rt=trt;
if (l==r){
wc[rt]+=z,ww[rt]+=z*b[l];
return;
}
rr int mid=(l+r)>>1;
if (x<=mid) update(ls[rt],l,mid,x,z);
else update(rs[rt],mid+1,r,x,z);
wc[rt]=wc[ls[rt]]+wc[rs[rt]],
ww[rt]=ww[ls[rt]]+ww[rs[rt]];
}
inline lll query(int rt,int l,int r,int kth){
if (l==r) return kth*b[l];
rr int mid=(l+r)>>1;
return kth<=wc[ls[rt]]?query(ls[rt],l,mid,kth):
query(rs[rt],mid+1,r,kth-wc[ls[rt]])+ww[ls[rt]];
}
}Tre;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(lll ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
bool cmp(rec a,rec b){return a.x<b.x;}
signed main(){
m=iut()<<1,T=iut(),Tre.cnt=0;
for (rr int i=1;i<=m;i+=2){
a[i].x=iut(),a[i+1].x=iut()+1,
a[i].p=iut(),a[i+1].p=-a[i].p,
b[++n]=a[i].p;
}
sort(b+1,b+1+n),sort(a+1,a+1+m,cmp),
n=unique(b+1,b+1+n)-b-1,Tre.build(rt[0],1,n);
for (rr int i=1,j=0;i<=m;++i){
rr int op=1; if (a[i].p<0) op=-1,a[i].p*=op;
for (;j<a[i].x;++j) rt[j+1]=rt[j]; if (j==T+1) break;
rr int t=lower_bound(b+1,b+1+n,a[i].p)-b;
Tre.update(rt[j],1,n,t,op);
}
for (rr lll lans=1;T;--T){
rr int X=iut(),A=iut(),B=iut(),C=iut();
rr int kth=1+(1ll*A*lans+B)%C;
if (Tre.wc[rt[X]]<=kth) lans=Tre.ww[rt[X]];
else lans=Tre.query(rt[X],1,n,kth);
print(lans),putchar(10);
}
return 0;
}

#主席树,离散,扫描线#洛谷 3168 [CQOI2015]任务查询系统的更多相关文章

  1. 洛谷 P3168 [CQOI2015]任务查询系统 解题报告

    P3168 [CQOI2015]任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. 超级计算机中的任务用三元组\((S_i,E_i,P_i) ...

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

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

  3. ●洛谷P3168 [CQOI2015]任务查询系统

    题链: https://www.luogu.org/problemnew/show/P3168题解: 主席树 强制在线? 那就直接对每一个前缀时间建一个线段树(可持久化线段树),线段树维护优先度权值. ...

  4. 洛谷P3168 [CQOI2015]任务查询系统

    #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #in ...

  5. Luogu 3168 [CQOI2015]任务查询系统

    区间修改单点查询,又观察到是一个k小,考虑主席树上做差分 一开始样例疯狂挂,后来发现主席树在一个历史版本上只能修改一次,所以要开2*n个根结点,记录一下每个时间对应的根结点编号 然后80分,考虑到当一 ...

  6. BZOJ_3932_[CQOI2015]任务查询系统_主席树

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

  7. BZOJ3932: [CQOI2015]任务查询系统 主席树

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4869  Solved: 1652[Submit][St ...

  8. 主席树||可持久化线段树||离散化||[CQOI2015]任务查询系统||BZOJ 3932||Luogu P3168

    题目: [CQOI2015]任务查询系统 题解: 是一道很经典的题目.大体思路是抓优先级来当下标做主席树,用时刻作为主席树的版本.然而优先级范围到1e7去了,就离散化一遍.然后把每个事件的开始(s). ...

  9. bzoj3932 / P3168 [CQOI2015]任务查询系统(主席树+差分)

    P3168 [CQOI2015]任务查询系统 看到第k小,就是主席树辣 对于每一段任务(a,b,k),在版本a的主席树+k,版本b+1的主席树-k 同一时间可能有多次修改,所以开个vector存操作, ...

  10. 2018.06.30 BZOJ 3932: [CQOI2015]任务查询系统(主席树)

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

随机推荐

  1. 文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具

    前言   在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入数据的线程放在子线程,仍然会造成界面程序的假死(实际上Qt还是在跑,只是磁盘消耗超过瓶颈,造成假死(注意:控制台还能看到打印输出 ...

  2. 本地配置静态ip和dns及虚拟机

  3. chrony同步时间

    chrony文件组成 包:chrony 两个主要程序:chronyd和chronyc - chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务同步.它确定计算机增减时间的比率,并 ...

  4. 【LeetCode二叉树#03】翻转二叉树的几种方法

    翻转二叉树 力扣题目链接(opens new window) 翻转一棵二叉树. 这道题目背后有一个让程序员心酸的故事,听说 Homebrew的作者Max Howell,就是因为没在白板上写出翻转二叉树 ...

  5. Vue源码学习(十):关于dep和watcher使用的一些思考

    好家伙,   前面想了好久,都没想明白为什么要dep和watcher打配合才能实现数据-视图同步 为什么要多一个依赖管理这样的东西 给每个数据绑个watcher(xxfunction),然后,数据变了 ...

  6. Finder Error code -36 “访达” 错误代码-36

    导致这个问题的原因是你的iCloud (iCloud和iCloud Drive是不一样的) 快满了. 如果你想解决这个问题,有以下三个方法: 1.多买苹果iCloud.(是的,苹果现在太恶心了.但这是 ...

  7. 【API Management】使用 APIM Inbound Policy 来修改Content‐Type Header的值

    问题描述 在使用APIM提供API服务管理的场景中,遇见了客户端请求时候发送的请求Header中的Content-Type不满足后台服务器的要求,但是在客户端要求客户修改代码难度较高. 所以面对这样的 ...

  8. 【Azure 事件中心】Event Hubs如何获取其中存放的历史消息

    问题描述 使用Azure Event Hub服务,除了正常的生产,消费消息以外,如果想拿到Event Hub中存储的历史消息?有什么方法呢? 问题解答 获取 Event Hubs 存储的历史消息,首先 ...

  9. 【Azure Redis 缓存】对于Azure Redis 从 Redis 4 升级到 Redis 6 的一些疑问

    问题描述 使用Azure Redis服务,客户端使用Redisson 3.X , 在近期Microsoft Azure对Redis服务进行大规模变动升级( Redis 版本由 4 升级到 6),对于这 ...

  10. 【Azure 应用服务】在Azure上部署一套VUE框架的单页面应用,有什么可以参考的文档呢?

    问题描述 在Azure上部署一套VUE框架的单页面应用,有什么可以参考的文档呢? 问题回答 Azure官方上并没有VUE框架的实例代码,但是可以参考Node JS项目,来进行设置. 在 Azure 中 ...