就是裸的主席树,差分之后排序插入主席树就行了.

注意主席树查询的时候叶子节点要特判,因为本身是有size的

还有要开longlong

CODE

#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
char cb[1<<15],*cs=cb,*ct=cb;
#define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<15,stdin),cs==ct)?0:*cs++)
template<class T>inline void read(T &res) {
char ch; for(;!isdigit(ch=getc()););
for(res=ch-'0';isdigit(ch=getc());res=res*10+ch-'0');
}
const int MAXN = 100005;
const int MAXM = MAXN*60;
struct task { int x, val; }a[MAXN<<1];
inline bool cmp(const task &i, const task &j) { return i.x < j.x; }
int ch[MAXM][2], sz[MAXM], tot, V, rt[MAXN];
int n, m, cur; LL sum[MAXM];
inline int Sign(int x) { return x > 0 ? 1 : -1; }
void modify(int &i, int p, int l, int r, int x, int val) {
i = ++tot;
sz[i] = sz[p] + val;
sum[i] = sum[p] + x*val;
if(l == r) return;
int mid = (l + r) >> 1;
if(x <= mid) ch[i][1] = ch[p][1], modify(ch[i][0], ch[p][0], l, mid, x, val);
else ch[i][0] = ch[p][0], modify(ch[i][1], ch[p][1], mid+1, r, x, val);
} LL query(int i, int l, int r, int x) {
if(l == r) return 1ll * l * x; //主席树查询叶节点要特判,因为自己有sz
if(sz[i] == x) return sum[i];
int mid = (l + r) >> 1;
if(sz[ch[i][0]] >= x) return query(ch[i][0], l, mid, x);
else return sum[ch[i][0]] + query(ch[i][1], mid+1, r, x-sz[ch[i][0]]);
}
int main () {
read(m), read(n);
for(int i = 1, s, e, p; i <= m; ++i) {
read(s), read(e), read(p);
a[++cur] = (task){ s, p };
a[++cur] = (task){ e+1, -p };
V = max(V, p);
}
sort(a + 1, a + cur + 1, cmp);
int now = 0;
for(int i = 1; i <= n; ++i) {
rt[i] = rt[i-1];
while(now < cur && a[now+1].x == i) {
++now;
modify(rt[i], rt[i], 1, V, abs(a[now].val), Sign(a[now].val));
}
}
LL lastans = 1, x, A, B, C, k;
for(int i = 1; i <= n; ++i) {
read(x), read(A), read(B), read(C);
k = (lastans * A + B) % C + 1;
printf("%lld\n", lastans=query(rt[x], 1, V, min(int(k), sz[rt[x]])));
}
}

BZOJ 3932: [CQOI2015]任务查询系统 (主席树板题)的更多相关文章

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

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

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

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

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

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

  4. BZOJ 3932: [CQOI2015]任务查询系统 | 主席树练习题

    题目: 洛谷也能评测 题解: De了好长时间BUG发现是自己sort前面有一行for没删,气死. 题目询问第x秒时候前k小的P值之和. 朴素想法: 我们可以把P值离散化,然后对于每个时刻建一棵定义域是 ...

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

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

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

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

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

    [CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...

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

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

  9. bzoj 3932: [CQOI2015]任务查询系统

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

随机推荐

  1. storm常见问题

    一.storm ui 不显示 supervisor 信息 在zk节点上删掉storm信息,重新启动storm集群即可

  2. 搜索(BFS、DFS、回溯)

    这类题是最简单的了都是一个套路,不像动态规划一类题一个套路,没做过就是不会也极难想出来. 一.BFS 解决的问题:用来初始点解决到指定点的最短路径问题,因为图的每一层上的点到初始点的距离相同.(注意是 ...

  3. Dom4j 生成xml并格式化

    Document document = DocumentHelper.createDocument(); //创建root         Element root = document.addEle ...

  4. SpringBoot或者SpringMVC 临时取消配置的视图页面的前后缀

    // 重定向到新的jsp页面return "redirect:/index.jsp"; // 请求转发到新的jsp页面 return "forward:/index.js ...

  5. Synchronized&Lock&AQS详解

    加锁目的:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问. 加锁方式:java锁分为两种--显示锁和隐示锁,本质区别在于显示锁需要的是程序员自己手动的进行加锁与解锁如Re ...

  6. 异常处理 try

    语法错误 这种错误的不能使用异常处理,你自己粗心写错怪谁,哼哼哼 比如说少冒号啦,丢了括号啦 逻辑错误 try: num = int(input("请输入数字")) print(1 ...

  7. redis 入门教程

    https://edu.aliyun.com/course/22/lesson/list?spm=5176.8252056.759075.5.Bbrpyz

  8. C#数字前补0

    [TestMethod] public void Test8() { ; string b = string.Format("{0:000000}", a); , '); }

  9. SqlServer学习之存储过程

    前言:对于存储过程一直有一种抵触的心理,因为毕业至今所在的公司开发组都不是很规范,对于开发的一些注意事项并没有很多的规定,只是在知乎上查找相关知识的时候,看到很多人对于在程序里使用存储过程的不好之处都 ...

  10. Spring切面编程Aspect之@Before和@Around用法

    查看dao层使用的sql import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; import org.aspectj. ...