[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 ...
随机推荐
- RePlace函数
<html><body> <script type="text/javascript"> var str="Visit qq1!&qu ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
- Lua 中的 RSA 加解密实现
记得之前,部门某款游戏陆陆续续收到一些玩家反馈,抱怨在登录游戏时会等待很久.初步排查后基本断定可能是此游戏的登录服务器程序某块代码有问题,于是即安排了服务器同事作排查分析但一直无果. 之后我时间有了空 ...
- Linux下pyftplib简单的脚本
from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyf ...
- ansible 主机清单 /etc/ansible/hosts
主机清单 [webservers] ansible01 ansible02 ansible03 ansible04 [root@ftp:/root] > ansible webservers - ...
- UVA 12507 Kingdoms
D - Kingdoms Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & %llu A kingdom ha ...
- Codeforces Round #252 (Div. 2)-C,D
C题就是一个简单的模拟.首先给每一个人两个.然后把剩下的都给一个人就好了. 给的时候蛇形给. #include<stdio.h> #include<string.h> #inc ...
- 使用ViewPager实现广告滑动效果
效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSk1DNjAx/font/5a6L5L2T/fontsize/400/ ...
- RT-Thread开篇
一直以来对操作系统都有一种既仰慕又畏惧的情感.一方面被操作系统的强大深深吸引.还有一方面又被操作系统的复杂性感到畏惧. 记得在学校的时候也学过一些操作系统的理论知识,但也只限于理论,更似人云亦云. 本 ...
- Asp.net button防止点击多次数据提交
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat= ...