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

注意主席树查询的时候叶子节点要特判,因为本身是有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. Python 解leetcode:48. Rotate Image

    题目描述:把一个二维数组顺时针旋转90度: 思路: 对于数组每一圈进行旋转,使用m控制圈数: 每一圈的四个元素顺时针替换,可以直接使用Python的解包,使用k控制每一圈的具体元素: class So ...

  2. selenium登录实验楼

    from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.s ...

  3. Pygame小游戏练习二

    @Python编程从入门到实践 Python项目练习 四.创建Ship类 建立ship.py,创建Ship类,管理飞船行为. # ship.py import pygame class Ship(): ...

  4. ShellCode 最小化编译优化

    1.生成ShellCode [root@localhost ~]# msfvenom -a x86 --platform Windows \ > -p windows/meterpreter/r ...

  5. CodeFirst实体类中,为什么都把ICollection<x>定义成virtual?

    主要是用于延迟加载,提高性能用的 只有定义成virtual后才可以延迟加载. 延迟加载,默认情况下,延迟加载被支持,如果你希望禁用它,必须显式声明,最好的位置是在 DbContext 的构造器中. p ...

  6. virtual和override

    偶然间看到的题,借此记录. class Program { static void Main(string[] args) { D d = new D(); //第一个D是申明类,第二个D是实例类 A ...

  7. 关于EF数据迁移的个人总结 简单有效

    有用的拿走,没用的嘴下留情!

  8. vue中使用svg字体图标

    1.在src/ 下面新建目录icons,里面新建文件夹svg,和文件index.js .svg用于存放从iconfont下载下来的svg格式的图标,index.js用于引入使用到svg文件和对应的组件 ...

  9. parseInt parseFloat Number三者转换的方式

    1.parseInt:从左到右检测字符串,若能先检测到数字,则将数字转换成整形,否则返回NaN. 2.parseFloat:从左到右检测字符串,若能先检测到数字,则将数字转换成浮点型,否则返回NaN. ...

  10. element-ui 中 el-table 相关操作

    1.带checkbox  获取所有选择的行. this.$refs.multipleTable.selection 获取选中的单行 this.$refs.roleTable.store.states. ...