正解:主席树

解题报告:

传送门!

首先考虑如果是单点修改,那就是个线段树板子嘛$QwQ$

然后现在是区间修改,对于区间修改,显然就考虑差分下,就变成单点修改辣$QwQ$

同时单点查询前$k$小也就变成了区间查询前$k$小

于是就主席树套下就好$QwQ$

详细点儿说下趴$QwQ$.先考虑如果查询的不是前$k$小,而是问这个点的$\sum p$,怎么做$QwQ$?

就考虑先转化成单点修改,然后区间查询算出$[1,x]$的所有数之和就成$QwQ$

然后现在问前$k$小?于是就查询前$k$个数的和就成$QwQ$.

这里可能会有疑问?就说如果某个任务在这之前就结束了怎么把它的影响消去?就考虑在$t+1$这里把这个任务的收益和数量影响都减去就好

$over$

$attention$,这儿有个我认为比较有用的小结论,就经常可以利用查分等手段,将单点查询区间修改与区间查询单点修改这种之类的彼此之间转换$QwQ$

然后这个小结论事实上在树上也有一定的应用,之前省选前$yyb$出的$T2$,$zsy$港了一个不记得什么东西的方法可以不用树剖,,,好像是把单点修改和子树修改相转换,,,?不记得辽,,,我哭死$QAQ$,,,如果哪天又想起来了可能会去问问学长什么的趴,,,$QAQ$大概不会有那天的$QwQ$

昂当然这种还是有一定局限性的,但也确实是一种比较妙的方法辣,还是要多思考多掌握昂$QwQ$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define lb(x) lower_bound(st+1,st+1+sum,x)-st const int N=+;
int m,n,st[N],sum,rt[N],nod_cnt,pre=;
struct evt{int tim,p,w;}e[N<<];
struct node{int l,r,num,sum;}tr[N<<]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il bool cmp(evt gd,evt gs){return gd.tim<gs.tim;}
void modify(ri &nw,ri d,ri l,ri r,ri pos,ri num)
{
nw=++nod_cnt;tr[nw]=tr[d];ri mid=(l+r)>>;
if(l==r){tr[nw].sum+=st[pos]*num,tr[nw].num+=num;return;}
if(mid>=pos)modify(tr[nw].l,tr[d].l,l,mid,pos,num);else modify(tr[nw].r,tr[d].r,mid+,r,pos,num);
tr[nw].sum=tr[tr[nw].l].sum+tr[tr[nw].r].sum;tr[nw].num=tr[tr[nw].l].num+tr[tr[nw].r].num;
}
int query(ri nw,ri l,ri r,ri num)
{
if(tr[nw].num<=num)return tr[nw].sum;
if(l==r)return (tr[nw].sum/tr[nw].num)*num;
if(tr[tr[nw].l].num>=num)return query(tr[nw].l,l,(l+r)>>,num);
return tr[tr[nw].l].sum+query(tr[nw].r,((l+r)>>)+,r,num-tr[tr[nw].l].num);
} int main()
{
//freopen("3168.in","r",stdin);freopen("3168.out","w",stdout);
m=read();n=read();
rp(i,,m){ri s=read(),t=read()+,p=read();e[(i<<)-]=(evt){s,st[++sum]=p,};e[i<<]=(evt){t,p,-};}
sort(st+,st++sum);sum=unique(st+,st++sum)-st-;sort(e+,e+((m<<)|),cmp);
rp(i,,m<<){modify(rt[e[i].tim],rt[e[i-].tim],,sum,lb(e[i].p),e[i].w);}
rp(i,,n)if(!rt[i])rt[i]=rt[i-];
while(n--)
{
ri x=read(),a=read(),b=read(),c=read(),k=+(1ll*a*pre%c+b)%c;
printf("%d\n",pre=query(rt[x],,sum,k));
}
return ;
}

洛谷$P$3168 任务查询系统 $[CQOI2015]$ 主席树的更多相关文章

  1. 【BZOJ3932】任务查询系统(主席树)

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

  2. BZOJ_3932_[CQOI2015]任务查询系统_主席树

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

  3. ●洛谷P3168 [CQOI2015]任务查询系统

    题链: https://www.luogu.org/problemnew/show/P3168题解: 主席树 强制在线? 那就直接对每一个前缀时间建一个线段树(可持久化线段树),线段树维护优先度权值. ...

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

    题目链接 被自己的sb错误调到自闭.. 主席树的进阶应用. 把\(P_i\)离散化一下,得到每个\(P_i\)的排名,然后建一棵维护\(m\)个位置的主席树,每个结点记录区间总和和正在进行的任务数. ...

  5. bzoj3932 / P3168 [CQOI2015]任务查询系统(主席树+差分)

    P3168 [CQOI2015]任务查询系统 看到第k小,就是主席树辣 对于每一段任务(a,b,k),在版本a的主席树+k,版本b+1的主席树-k 同一时间可能有多次修改,所以开个vector存操作, ...

  6. 2018.06.30 BZOJ 3932: [CQOI2015]任务查询系统(主席树)

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

  7. 洛谷P2633 Count on a tree(主席树上树)

    题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个 ...

  8. BZOJ3932 CQOI2015 任务查询系统 【主席树】

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

  9. 洛谷P4587 [FJOI2016]神秘数(主席树)

    题面 洛谷 题解 考虑暴力,对于询问中的一段区间\([l,r]\),我们先将其中的数升序排序,假设当前可以表示出\([1,k]\)目前处理\(a_i\),假如\(a_i>k+1\),则答案就是\ ...

随机推荐

  1. 17-3 cookie和session

    一 . Cookie 1.cookie 是什么? 保存在浏览器端的键值对! 服务端在返回响应的时候,告诉浏览器保存的键值对!浏览器可以拒绝保存Cookie. 2. 为什么要有cookie? HTTP请 ...

  2. HZOJ 走格子

    作者的正解: 对于100%的数据:行动可以分为两种: 1. 步行,花费一个单位的时间移动到4联通的相邻格子中去. 2. 使用传送门,指定一个方向的墙的前面的一个格子,步行至最近的一个墙的面前,使用传送 ...

  3. 学linux内核与学linux操作系统有什么区别!?

    linux内核包括:进程管理,存储管理,IO管理,文件系统等功能.linux操作系统则是linux内核再加上像shell或图形界面和其他的实用软件,比内核庞大的多.建议先学shell命令和linux下 ...

  4. H3C 使用命令视图

  5. Websocket 群聊功能

    websocket 群聊 前提关闭防火墙 写入代码 from flask import Flask,request,render_template from geventwebsocket.handl ...

  6. ngRoute

    ngRoute 模块中包含以下内容, 名称 所属 作用 ngView DIRECTIVE 提供不同路由模板插入的视图层 $routeProvider PROVIDER 提供路由配置 $route SE ...

  7. html选择题

    1.下面关于css样式和html样式的不同之处说法正确的是(A) A.html样式只影响应用它的文本和使用所选html样式创建的文本 B.css样式只可以设置文字字体样式        不仅仅能够设置 ...

  8. github下载慢,轻松提速教程

    获取github的IP地址访问:https://www.ipaddress.com/ 网址 依次获取以下三个网址的IP github.comgithub.global.ssl.fastly.netco ...

  9. CSS优化,提高性能的方法有哪些?

    1,首推的是合并css文件,如果页面加载10个css文件,每个文件1k,那么也要比只加载一个100k的css文件慢. 2,减少css嵌套,最好不要套三层以上. 3,不要在ID选择器前面进行嵌套,ID本 ...

  10. javascript和jquery 移除事件 和 改变样式

    javascript移除事件: document.getElementById("word").onmouseover = null; javascript改变样式: docume ...