[CQOI2015]任务查询系统 主席树_差分
Code:
#include<vector>
#include<cstdio>
#include<algorithm>
#include<string>
#include<iostream>
#include<cstring> using namespace std; void SetIO(string a){
string in = a + ".in";
freopen(in.c_str(), "r", stdin);
} const int maxn = 100000 + 4; struct Task{
int st, ed, val;
Task(int st = 0, int ed = 0, int val = 0):st(st), ed(ed), val(val){}
}task[maxn]; int Sorted[maxn]; int n, m; void Read(){
scanf("%d%d",&m,&n);
for(int i = 1;i <= m; ++i)
{
int a, b, c;
scanf("%d%d%d",&a,&b,&c);
task[i] = Task(a, b, c);
Sorted[i] = task[i].val;
}
} struct Type{
int delta, val;
Type(int delta=0, int val=0):delta(delta), val(val){}
};
vector<Type>G[maxn]; void Disperse(){
sort(Sorted + 1, Sorted + 1 + m);
for(int i = 1;i <= m; ++i){ task[i].val = lower_bound(Sorted + 1, Sorted + 1 + m, task[i].val) - Sorted; G[task[i].st].push_back(Type(1, task[i].val));
G[task[i].ed + 1].push_back(Type(-1, task[i].val));
}
} const int Tree_const = 50; int numv[maxn * Tree_const], root[maxn]; long long sumv[maxn * Tree_const]; struct Chair_Tree{ int lson[maxn * Tree_const], rson[maxn * Tree_const], cnt_Tree; void build(int l, int r, int &o){
if(l > r) return ; o = ++cnt_Tree; if(l == r) return ; int mid = (l + r) >> 1; build(l, mid, lson[o]);
build(mid + 1, r, rson[o]);
} int insert(int l, int r, int o, int pos, int delta){
int oo = ++cnt_Tree;
lson[oo] = lson[o];
rson[oo] = rson[o];
numv[oo] = numv[o] + delta;
sumv[oo] = sumv[o] + delta * Sorted[pos];
int mid = (l + r) >> 1; if(l == r) return oo; if(pos <= mid)
lson[oo] = insert(l, mid, lson[o], pos, delta);
else
rson[oo] = insert(mid + 1, r, rson[o], pos, delta); return oo;
} long long query(int l, int r, int cur, int k){
if(l == r) return k * Sorted[l]; int lnum = numv[lson[cur]] ;
int mid = (l + r) >> 1; if(k <= lnum)
return query(l, mid,lson[cur], k);
else
return sumv[lson[cur]] + query(mid + 1, r, rson[cur], k - lnum);
} }Tree; void Build(){ Tree.build(1, m, root[0]); for(int i = 1;i <= n; ++i){
int siz = G[i].size();
int rt = root[i - 1]; for(int j = 0;j < siz; ++j){
rt = Tree.insert(1, m, rt, G[i][j].val, G[i][j].delta);
}
root[i] = rt;
} } void Init(){
Read();
Disperse();
Build();
} void Work(){
long long pre = 1;
for(int i = 1;i <= n; ++i){
int x, k, a, b, c;
scanf("%d%d%d%d",&x,&a,&b,&c);
k = 1 + (a * pre + b) % c; if(numv[root[x]] < k)
pre = sumv[root[x]] ;
else
pre = Tree.query(1, m, root[x], k);
printf("%lld\n", pre);
}
} int main(){
SetIO("input");
Init();
Work();
return 0;
}
[CQOI2015]任务查询系统 主席树_差分的更多相关文章
- 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]
题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...
- BZOJ3932: [CQOI2015]任务查询系统 主席树
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 4869 Solved: 1652[Submit][St ...
- [CQOI2015]任务查询系统 主席树
[CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...
- bzoj 3932: [CQOI2015]任务查询系统 -- 主席树 / 暴力
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管 ...
- 【BZOJ3932】[CQOI2015]任务查询系统 主席树
[BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...
- BZOJ.3932.[CQOI2015]任务查询系统(主席树 差分)
题目链接 对于这一区间的操作,我们可以想到差分+前缀和(感觉也没什么别的了..). 同时对于本题我们能想到主席树,而主席树正是利用前一个节点建树的. 所以离散化.按时间排序,把操作拆成单点加和减即可. ...
- BZOJ 3932: [CQOI2015]任务查询系统 [主席树]
传送门 题意: 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行),其优先级为Pi 调度系统会经常向查询系统询问,第Xi ...
- BZOJ3932[CQOI2015]任务查询系统——主席树
题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第E ...
- BZOJ 3932: [CQOI2015]任务查询系统 (主席树板题)
就是裸的主席树,差分之后排序插入主席树就行了. 注意主席树查询的时候叶子节点要特判,因为本身是有size的 还有要开longlong CODE #include <cctype> #inc ...
随机推荐
- Java操作Kafka执行不成功
使用kafka-clients操作kafka始终不成功,原因不清楚,下面贴出相关代码及配置,请懂得指点一下,谢谢! 环境及依赖 <dependency> <groupId>or ...
- 验证码模拟登录TestHome
前面我们做了一个xsrf的知乎的模拟登录,那么今天将会给大家分享一下小弟写的一段带验证码的登录脚本. 今天我们要做的是testerhome的模拟登录,在做这个模拟登录的时候,我发现需要验证码才能登 ...
- jquery的animate能渐变background-color
在freecodecamp 上学习复习时,写了一个demo,引用了 jquery 实现 color 的渐变动画,然后运行测试的时候,发现其他功能都正常,就是无法是实现颜色的动画. 如: $('butt ...
- ASP版_阿里大于短信API Demo
阿里大于申请地址:http://www.alidayu.com 阿里大于短信发送Demo: ******index.asp************* <%@LANGUAGE="VBSC ...
- CorelDRAW 2017通过智能笔触调整自然地绘制草图
LiveSketch 工具是CorelDRAW 2017版本中的新增功能,LiveSketch 工具适合快速草图和绘图,可以帮助您加快工作流并使您能够专注于创建流程.该工具并不预填充节点和图柄,而且无 ...
- sqlserver中计算结果保留小数
经常要保留小数,在程序中计算太麻烦了,还要转换操作.直接在数据库中操作来得方便. 把数据类型定义成decimal/numeric类型,小数位看需要随意设,除数与被除数必须要有一个为decimal/nu ...
- (转)彻底学会使用epoll(一)——ET模式实现分析
注:之前写过两篇关于epoll实现的文章,但是感觉懂得了实现原理并不一定会使用,所以又决定写这一系列文章,希望能够对epoll有比较清楚的认识.是请大家转载务必注明出处,算是对我劳动成果的一点点尊重吧 ...
- java判断string数组中是否包含某个元素
- POJ 3744
矩阵快速乘求概率,不难.但有注意的一点是,一定要注意地雷连着的情况,一旦出现两个雷相邻,就必定为0了. #include <iostream> #include <algorithm ...
- Oracle sql 子字符串长度判断
Oracle sql 子字符串长度判断 select t.* from d_table t ,) ,instr(t.col,; 字符串的前两位都是数字: select * from d_table t ...