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. lcd 显示屏

    1.lcd 接口信号: VSYNC : 一帧新数据的开始信号 HSYNC :一行新数据的开始信号 VCLK   :像素的同步信号 VD[0:23]  :传递数据的信号线 2. LCD  的显示原理 ( ...

  2. php设置头部让任何域名请求

    header("Access-Control-Allow-Origin: *"); // 允许任意域名发起的跨域请求...

  3. opencv矩阵操作

    1.初始化矩阵: 方式一.逐点赋值式: CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 ); cvZero( mat ); cvmSet( mat, 0, 0, 1 ...

  4. spring boot springmvc视图

    pring boot 在springmvc的视图解析器方面就默认集成了ContentNegotiatingViewResolver和BeanNameViewResolver,在视图引擎上就已经集成自动 ...

  5. cakephp 如何在一个模型里调用另一个模型

    $admin_users = ClassRegistry::init('AdminUsers'); $admin_name = $admin_users->find('list',array( ...

  6. lua keynote2

    [lua keynote2] 1.Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil). > s, e = ...

  7. Java基础学习笔记(三)

    18.2.1无参无返回值的方法 18.2.1.1定义方法的语法格式 public static void 方法名称(){ 方法体 } 方法调用 类名.方法名称(); 注意:在Java中,同一个类中的方 ...

  8. 反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    枚举 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象.这种实例有限而且固定的类,在Java里被称为枚举类. 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编 ...

  9. 二进制中1的个数(python)

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. # -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): ...

  10. 01背包 hdu1864

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864 注意事项: 在这里所有输入的价格都是两位小数(题目没说,看论坛才知道的). 这里单项价格不能超过 ...