BZOJ3932 CQOI2015 任务查询系统 - 主席树,离散化
记录下自己写错的地方吧
1. 区间可能有重复
2. 没有出现的坐标也要计入version (因为询问里可能会有)
#include <bits/stdc++.h>
using namespace std; int n,m,t1,t2,t3,t4,_s[],_e[],_p[],ind,ch[][];
int a[],root[],rcnt,ver[],maxn,_list[],flag;
long long s[]; struct Item {
int pos,typ,key;
void init(int a,int b,int c) {
pos=a; typ=b; key=c;
}
} item[]; int cmp(const Item &a, const Item &b) {
return a.pos<b.pos;
} void modify(int sp,int &p,int l,int r,int pos,int val,int k) {
if(p==||p==sp) p=++ind, ch[p][]=ch[sp][], ch[p][]=ch[sp][], a[p]=a[sp], s[p]=s[sp];
if(l==r) {
if(k==) a[p]+=, s[p]+=(long long)_list[val];
else a[p]-=, s[p]-=(long long)_list[val];
}
else{
if(val<=(l+r)/) modify(ch[sp][],ch[p][],l,(l+r)/,pos,val,k);
else modify(ch[sp][],ch[p][],(l+r)/+,r,pos,val,k);
a[p]=a[ch[p][]]+a[ch[p][]];
s[p]=s[ch[p][]]+s[ch[p][]];
}
} int queryA(int p,int l,int r,int ql,int qr) {
if(l>qr||r<ql) return ;
if(l>=ql && r<=qr) return a[p];
return queryA(ch[p][],l,(l+r)/,ql,qr)+queryA(ch[p][],(l+r)/+,r,ql,qr);
} long long queryS(int p,int l,int r,int ql,int qr) {
if(l>qr||r<ql) return ;
if(l>=ql && r<=qr) return s[p];
return queryS(ch[p][],l,(l+r)/,ql,qr)+queryS(ch[p][],(l+r)/+,r,ql,qr);
} int kth(int p,int l,int r,int k) {
if(l==r) {
if(a[p]) flag=(k-a[p])*(s[p]/a[p]);
else flag=;
return l;
}
if(k<=a[ch[p][]]) return kth(ch[p][],l,(l+r)/,k);
else return kth(ch[p][],(l+r)/+,r,k-a[ch[p][]]);
} int main(){
long long pre=;
ios::sync_with_stdio(false);
cin>>n>>m; maxn=n;
for(int i=;i<=n;i++) cin>>_s[i]>>_e[i]>>_p[i],
item[i*-].init(_s[i],,_p[i]),
item[i*].init(_e[i]+,,_p[i]),
_list[i]=_p[i];
sort(item+,item+*n+,cmp);
sort(_list+,_list+n+);
unique(_list+,_list+n+);
for(int i=;i<=*n;i++) {
if(item[i].pos-item[i-].pos) for(int j=item[i-].pos;j<item[i].pos;j++) ver[j]=i-;
modify(root[i-],root[i],,maxn,item[i].pos,lower_bound(_list+,_list+n+,item[i].key)-_list,item[i].typ?:-);
}
ver[item[*n].pos]=*n;
for(int i=;i<=m;i++) {
cin>>t1>>t2>>t3>>t4;
t2=+((long long)t2*(long long)pre+(long long)t3)%(long long)t4;
t3=kth(root[ver[t1]],,maxn,t2),
cout<<(pre=(queryS(root[ver[t1]],,maxn,,t3)+flag))<<endl;
}
}
BZOJ3932 CQOI2015 任务查询系统 - 主席树,离散化的更多相关文章
- BZOJ3932: [CQOI2015]任务查询系统 主席树
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 4869 Solved: 1652[Submit][St ...
- BZOJ3932[CQOI2015]任务查询系统——主席树
题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第E ...
- 【BZOJ3932】[CQOI2015]任务查询系统 主席树
[BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...
- [CQOI2015]任务查询系统 主席树
[CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...
- bzoj 3932: [CQOI2015]任务查询系统 -- 主席树 / 暴力
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管 ...
- 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]
题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...
- BZOJ 3932: [CQOI2015]任务查询系统 [主席树]
传送门 题意: 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行),其优先级为Pi 调度系统会经常向查询系统询问,第Xi ...
- BZOJ.3932.[CQOI2015]任务查询系统(主席树 差分)
题目链接 对于这一区间的操作,我们可以想到差分+前缀和(感觉也没什么别的了..). 同时对于本题我们能想到主席树,而主席树正是利用前一个节点建树的. 所以离散化.按时间排序,把操作拆成单点加和减即可. ...
- BZOJ 3932: [CQOI2015]任务查询系统 | 主席树练习题
题目: 洛谷也能评测 题解: De了好长时间BUG发现是自己sort前面有一行for没删,气死. 题目询问第x秒时候前k小的P值之和. 朴素想法: 我们可以把P值离散化,然后对于每个时刻建一棵定义域是 ...
随机推荐
- Centos7 使用Docker 部署mssql 2017
mssql是.NET的标配,一般使用.NET的人基本都用mssql. 以前mssql只能支持windows平台,从微软打出 拥抱开源 的口号开始,mssql的2017 版本,开始支持linux系统. ...
- Objective-C编程 — 类和继承
讲述面向对象中的一个重要概念——继承,使用继承 可以方便地在已有类的基础上进行扩展,定义一个具有父 类全部功能的新类. 父类和子类 我们在定义一个新类的时候,经常会遇到要定义的新类是某个类的扩展或者是 ...
- Office Tool Plus - 一个OFFICE 管理、下载、安装器
文章选自我的博客:https://blog.ljyngup.com/archives/160.html/ 教程摘自官方教程. 官网:https://otp.landian.vip/zh-cn/ Off ...
- Python——面向对象,简易学生信息管理系统
一.概述 1.1涉及到的知识点 项目开发:创建项目,创建包,导入包: 面向对象:静态方法,继承,内置函数,自定义函数: 数据类型:列表,字典,字符串.列表.字典的转换和自动生成导向: 异常处理:捕获异 ...
- css选择器四大类:基本、组合、属性、伪类
什么是选择器?选择器的作用是通过它可以找到元素,把css样式传递给元素!css选择器主要分为:基本选择器.属性选择器.组合选择器与伪类选择器四个大类! css基本选择器 基本选择器又分为:*通配符.标 ...
- springboot + mybatis 支持oracle和mysql切换含源码
1.springboot 启动类加入bean 如下 // DatabaseIdProvider元素主要是为了支持不同的数据库@Beanpublic DatabaseIdProvider getData ...
- Bash脚本编程学习笔记06:条件结构体
简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...
- ajax 携带参数传递 页面 查找
不从新定义只能传过来数字 ,不能穿字符串 完整的ajax 获取参数跳转页面
- vue_day02
vue_day02 1.绑定事件指令 v-on <body> <div id="app"> <button v-on:click="num+ ...
- django-分页(非海量数据)
views.py class AnalysisDataHandler(View): def get(self, request): analysis_data = MonitorCenterDataA ...