Solution

差分就好了, 在$s_i$ 的点+1, $e_i + 1$ 的点 - 1。

查询的时候注意$l == r$ 要返回 $k * b[l]$ ,而不是$sum[node] $因为当前位置的个数可能大于$k$

最后再心疼自己因为神奇建树挂死2333, 被大佬喷了(

Code

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define rd read()
#define ll long long
using namespace std; const int N = 2e5 + 1e3; int n, m, num;
int b[N], tot, nd_num;
int lson[N * ], rson[N * ], root[N << ], cnt[N * ];
ll lastans = , sum[N * ]; struct node {
int d, pos, x;
}a[N << ]; int read() {
int X = , p = ; char c= getchar();
for( ;c > '' || c < ''; c = getchar()) if( c == '-') p = -;
for(; c >= '' && c <= ''; c = getchar()) X = X * + c - '';
return X * p;
} int cmp(const node &A, const node &B) {
return A.x < B.x;
} int fd(int x) {
return lower_bound(b + , b + + tot, x) - b;
} void change(int last, int &now, int pos, int d, int l, int r) {
now = ++nd_num;
sum[now] = sum[last] + d * b[pos];
cnt[now] = cnt[last] + d;
lson[now] = lson[last];
rson[now] = rson[last];
if(l == r) return;
int mid = (l + r) >> ;
if(pos <= mid)
change(lson[last], lson[now], pos, d, l, mid);
else
change(rson[last], rson[now], pos, d, mid + , r);
} ll query(int now, int k, int l, int r) {
if(cnt[now] < k) return sum[now];
if(l == r)
return b[l] * k;
int mid = (l + r) >> , tmp;
if((tmp = cnt[lson[now]]) >= k)
return query(lson[now], k, l, mid);
else
return sum[lson[now]] + query(rson[now], k - tmp, mid + , r);
} int main()
{
n = rd; m = rd;
for(int i = ; i <= n; ++i) {
int l = rd, r = rd, pos = rd;
a[++num].d = ;
a[num].pos = pos;
a[num].x = l;
a[++num].d = -;
a[num].pos = pos;
a[num].x = r + ;
b[++tot] = pos;
}
sort(b + , b + + tot);
tot = unique(b + , b + + tot) - b - ;
sort(a + , a + + num, cmp);
for(int i = , j = ; i <= m; ++i) {
root[i] = root[i - ];
for(; j <= num && a[j].x == i; ++j) {
change(root[i], root[i], fd(a[j].pos), a[j].d, , tot);
}
}
for(int i = ; i <= m; ++i) {
int x = rd, A = rd, B = rd, C = rd, k;
k = + (A * lastans + B) % C;
lastans = query(root[x], k, , tot);
printf("%lld\n", lastans);
}
}

BZOJ 3932 [CQOI2015]任务查询系统 - 差分 + 主席树的更多相关文章

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

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

  2. bzoj 3932 [CQOI2015]任务查询系统(主席树)

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

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

    题面 分析 对于一个区间修改(s,e,v),我们可以将它差分,这样就变成了单点修改s和e+1(s插入,t+1删除) 我们用主席树维护差分数组的前缀和,第i棵主席树维护区间[1,i]之间的所有差分值 那 ...

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

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

  5. bzoj 3932: [CQOI2015]任务查询系统 -- 主席树 / 暴力

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

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

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

  7. BZOJ3932 CQOI2015 任务查询系统 【主席树】

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

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

    题目链接 对于这一区间的操作,我们可以想到差分+前缀和(感觉也没什么别的了..). 同时对于本题我们能想到主席树,而主席树正是利用前一个节点建树的. 所以离散化.按时间排序,把操作拆成单点加和减即可. ...

  9. BZOJ 3932: [CQOI2015]任务查询系统 [主席树]

    传送门 题意: 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行),其优先级为Pi 调度系统会经常向查询系统询问,第Xi ...

随机推荐

  1. apache常见的一些配置

    <VirtualHost *:80>ServerName www.aliyun.com #域名ServerAlias www.aliyun.com #别名DocumentRoot /dat ...

  2. 对于“2017面向对象程序设计(Java)第五周工作总结”存在问题的反馈及本周教学计划

    一:问题反馈 “上周我们学习的新内容主要是第五章,并对第四章内容做了巩固.从学生上交的实验报告完成情况以及学习Java心得博客中的反馈可以看出,学生对构造器.重载.超类.多态.抽象类这几个概念理解的不 ...

  3. SpringMVC点滴(1)

    在使用springMVC很久,却一直没有总结其中的一些便捷配置和功能,恰好有空,加以总结 Servlet 3之后,在web.xml中加入async的支持,从而实现异步请求,需要在servlet和fil ...

  4. asp.net MVC 异常处理

    http://www.cnblogs.com/think8848/archive/2011/03/18/1987849.html http://www.cnblogs.com/snowdream/ar ...

  5. elasticsearch 不同集群数据同步

    采用快照方式 1.源集群采用NFS,注意权限 2.共享目录完成后,在所有ES服务器上挂载为同一目录 3.创建快照仓库 put _snapshot/my_backup{ "type" ...

  6. TOJ1698/POJ3264Balanced Lineup (线段树 or RMQ-ST)

    传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1698 时间限制(普通/Java): ...

  7. oracle中取得当前日期,前一天,当前月,前一个月

    当前日:select TRUNC(SYSDATE)  from dual; 前一天: select TRUNC(SYSDATE - 1)   from dual; 前一天转换为日期格式: select ...

  8. java Scanner类注意事项

    1,循环或递归调用获取数字时,不能用hasNextInt()判断是否有输入,不然会陷入死循环,应该用hasNext().获取也不能用nextInt(),应用next(),否则也会死循环 例如这段代码, ...

  9. Word打开时显示*模板*,删除模板

    XP系统, 找到目录 C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates 删除里面的模板文件即可

  10. dUMP:A new value is to be assigned to the field "<L_BOX>"

    DUMP: A new value is to be assigned to the field "<L_BOX>", although this field is e ...