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值离散化,然后对于每个时刻建一棵定义域是 ...
随机推荐
- C#面向对象--结构
一.结构(Struct)是CTS中五种基本类型之一,是一种值类型,同样封装了同属一个逻辑单元的数据和行为,这些数据和行为通过结构中的成员表示:结构与类共享大多数相同的语法,但结构比类受到的限制更多,结 ...
- Java基础之五、Java编程思想(1-7)
一.对象导论 1:多态的可互换对象 面向对象程序设计语言使用了后期绑定的概念. 当向对象发送消息时,被调用的代码直到运行时才能确定.也叫动态绑定. 2:单根继承结构 所有的类最终都继承自单一的基类,这 ...
- Prime_Series_Level-1
0x01 先收集靶机端口,目录信息 1)nmap扫描端口 开启了ssh服务和apache服务,搜索相关漏洞 只有一个ssh用户名枚举,先放着 2)dirb爆破目录 dirb http://192.16 ...
- AGC014-F Strange Sorting
题意 \(n\)-排列,反复进行:将序列中为前缀最大值的数全部移动到序列末(两种数不改变相对位置),问经过多少次后第一次全部升序排列 做法 定义:用high表示为前缀最大值,low则反之 考虑忽略\( ...
- 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...
- FPGA分频与倍频的简单总结(涉及自己设计,调用时钟IP核,调用MMCM原语模块)
原理介绍 1.分频 FPGA设计中时钟分频是重要的基础知识,对于分频通常是利用计数器来实现想要的时钟频率,由此可知分频后的频率周期更大.一般而言实现偶数系数的分频在程序设计上较为容易,而奇数分频则相对 ...
- intellji IDEA 2019版激活码(亲测可用 2019年10月14日08:53:54)
MNQ043JMTU-eyJsaWNlbnNlSWQiOiJNTlEwNDNKTVRVIiwibGljZW5zZWVOYW1lIjoiR1VPIEJJTiIsImFzc2lnbmVlTmFtZSI6I ...
- sass实现头条新闻列表页面
Index.html <!DOCTYPE html> <html> <head> <title>今日头条</title> <meta ...
- 2020qbxt游记
csp-s 突破 ----------------------------------------- 1-15 下午才走,这实在是太恶心了.然而因为感冒,当众大佬们都在上学的时候,我在家里睡觉. 2: ...
- 安卓自定义View实例-----跟随手指移动的鸟
今天学习了一些安卓开发中的自定义布局,编写了简单一个实例,“跟随手指移动的鸟”,需要两张图片,背景图片和鸟的图片,鸟的图片可以在屏幕中跟随手指的移动而移动. 1.将两张图片导入到mipmap中: 2. ...