P3168 [CQOI2015]任务查询系统

看到第k小,就是主席树辣

对于每一段任务(a,b,k),在版本a的主席树+k,版本b+1的主席树-k

同一时间可能有多次修改,所以开个vector存操作,再开个数组ti[p]保存时间点p最终的版本号

注意long long

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
typedef long long ll;
inline int Abs(int a){return a<?-a:a;}
inline int Max(int a,int b){return a>b?a:b;}
#define N 100005
#define W 20000005
int n,m,mx,u,tot,ti[N],rt[W],lc[W],rc[W],siz[W];
ll s[W],Pre=;
vector <int> g[N];
#define mid (l+r)/2
void Ins(int &o,int p,int l,int r,int v){
o=++u; siz[o]=siz[p]+(v>?:-); s[o]=s[p]+v;
if(l==r) return ;
if(Abs(v)<=mid) rc[o]=rc[p],Ins(lc[o],lc[p],l,mid,v);
else lc[o]=lc[p],Ins(rc[o],rc[p],mid+,r,v);
}
ll Ask(int o,int l,int r,int k){
if(l==r) return 1ll*l*k;
if(siz[lc[o]]>k) return Ask(lc[o],l,mid,k);
else return s[lc[o]]+Ask(rc[o],mid+,r,k-siz[lc[o]]);
}
int main(){
register int i,j; int q1,q2,q3,q4;
scanf("%d%d",&n,&m);
for(i=;i<=n;++i){
scanf("%d%d%d",&q1,&q2,&q3);
g[q1].push_back(q3);
g[q2+].push_back(-q3);
mx=Max(mx,q3);
}
for(i=;i<=n;++i){
for(j=g[i].size()-;j>=;--j)
++tot,Ins(rt[tot],rt[tot-],,mx,g[i][j]);
ti[i]=tot;
}
for(i=;i<=m;++i){
scanf("%d%d%d%d",&q1,&q2,&q3,&q4);
q2=+(q2*Pre+q3)%q4; q1=rt[ti[q1]];
Pre=q2<siz[q1]?Ask(q1,,mx,q2):s[q1];
printf("%lld\n",Pre);
}return ;
}

bzoj3932 / P3168 [CQOI2015]任务查询系统(主席树+差分)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. BZOJ 3932: [CQOI2015]任务查询系统 (主席树板题)

    就是裸的主席树,差分之后排序插入主席树就行了. 注意主席树查询的时候叶子节点要特判,因为本身是有size的 还有要开longlong CODE #include <cctype> #inc ...

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

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

随机推荐

  1. char varchar

    对于字符类型的有:char:固定长度,存储ANSI字符,不足的补英文半角空格.nchar:固定长度,存储Unicode字符,不足的补英文半角空格varchar:可变长度,存储ANSI字符,根据数据长度 ...

  2. cocos2d-x c++ (多种屏幕Android与iOS的适配原理)

    1.AppDelegate.cpp 文件中 bool AppDelegate::applicationDidFinishLaunching() { // initialize director aut ...

  3. AsssetBunlder打包

    unity3d,资源过多的话.可以压缩成一个资源包.加载出来后.可以解压.找到自己需要的资源 就想.net网站.很多图标都是放一个大图片上.而不是一个图标就是一个图片 因为是在项目编辑时候给资源打包. ...

  4. jsp的文件包含漏洞

    jsp的文件包含分静态包含的动态包含两种: 静态包含:<%@include file="top.jsp"%> 动态包含:<jsp:include page=&qu ...

  5. MyEclipse 黑色主题 jsp 页面 js背景色修改

    Windows-->Preferences-->Myeclipse-->Files and Editors-->JavaScript-->Editor-->Synt ...

  6. css解决无论页面长短footer永远置底

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联

    2018-11-10  22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...

  8. 向SQL Server中导入Excel的数据

    1.  手动界面导入Excel数据 同 https://jingyan.baidu.com/article/ce09321b9a0e252bff858ff9.html 首先打开并登陆sql serve ...

  9. NSThread(II)

    非线程安全 //初始化火车票数量.卖票窗口(非线程安全).并开始卖票 - (void)initTicketStatusNotSave { // 1. 设置剩余火车票为 50 self.ticketSu ...

  10. url组成