记录下自己写错的地方吧

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 任务查询系统 - 主席树,离散化的更多相关文章

  1. BZOJ3932: [CQOI2015]任务查询系统 主席树

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4869  Solved: 1652[Submit][St ...

  2. BZOJ3932[CQOI2015]任务查询系统——主席树

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第E ...

  3. 【BZOJ3932】[CQOI2015]任务查询系统 主席树

    [BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...

  4. [CQOI2015]任务查询系统 主席树

    [CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...

  5. bzoj 3932: [CQOI2015]任务查询系统 -- 主席树 / 暴力

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec  Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管 ...

  6. 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]

    题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...

  7. BZOJ 3932: [CQOI2015]任务查询系统 [主席树]

    传送门 题意: 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行),其优先级为Pi 调度系统会经常向查询系统询问,第Xi ...

  8. BZOJ.3932.[CQOI2015]任务查询系统(主席树 差分)

    题目链接 对于这一区间的操作,我们可以想到差分+前缀和(感觉也没什么别的了..). 同时对于本题我们能想到主席树,而主席树正是利用前一个节点建树的. 所以离散化.按时间排序,把操作拆成单点加和减即可. ...

  9. BZOJ 3932: [CQOI2015]任务查询系统 | 主席树练习题

    题目: 洛谷也能评测 题解: De了好长时间BUG发现是自己sort前面有一行for没删,气死. 题目询问第x秒时候前k小的P值之和. 朴素想法: 我们可以把P值离散化,然后对于每个时刻建一棵定义域是 ...

随机推荐

  1. 移动app

    什么是移动App开发[重点] 苹果上的软件是如何开发出来的:使用IOS平台的开发工具和开发语言进行设计开发的!苹果上的开发语言:OC.Swift 安卓平台上的软件又是如何开发出来的:使用Java这么语 ...

  2. Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面

    场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  3. MySql学习-2. NavicatforMySQL 与 MySql的对接以及一些操作:

    1.连接: 2.数据库的创建: 3.数据库中表的创建:    4.表的设计: 4.1 设计表: 4.2 增加数据(自动递增只是保证唯一值,即使数据删除了也是得前进):

  4. git rm与git rm --cached的区别

    git rm与git rm --cached的区别 当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用. git rm file_path git commit -m 'd ...

  5. 使用VConsole调试代码

    在真实手机上运行H5页面时,无法看到控制台.为了能在真实手机上使用控制台,可以加入如下代码实现控制台: //引入vconsole var isTestEnvironment =true if(isTe ...

  6. 【React Native】集成声网Agora语音通讯

    前言: 公司的产品是一款基于社交的内容聊天软件,需要集成语音通讯功能,在写iOS原生项目时,用到的就是Agora SDK,现在写React Native也直接采用了Agora的库. 集成iOS.And ...

  7. selenium获取缓存数据

    爬虫呢有时候数据方便有时候登入获得cookies,以及获取他存缓存中的数据 一.获取缓存中的数据其实很简单js注入就好了 localStorage_1 = driver.execute_script( ...

  8. ES6之常用开发知识点:入门(一)

    ES6介绍 ES6, 全称 ECMAScript 6.0 ,2015.06 发版. let 和 const命令 let命令 let 命令,用来声明变量.它的用法类似于var,区别在于var声明的变量全 ...

  9. java.lang.ClassCastException:java.util.LinkedHashMap不能转换为com.testing.models.xxx

    后台接收前台的json字符串 转pojo 问题(Object 对应定义的pojo) ObjectMapper mapper=new ObjectMapper(); Object object = ma ...

  10. 报表生成(POI,jquery.table2excel.js,Echarts)

    最近公司要弄个报表相关的功能,话不多说,先上图 前一种是POI 生成的,后一种是Echarts生成的.报表我想大家都不陌生,基本上在公司业务中都会使用到.先说说POI,jquery.table2exc ...