模板题...

差分,然后用主席树维护时间点上的优先值和就好了

就是细节烦...

 #include<bits/stdc++.h>
#define int long long
#define mid (l+r>>1)
#define writeln(x) write(x),puts("")
#define writep(x) write(x),putchar(' ')
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}void write(int x){
if(x<) putchar('-'),x=-x;
if(x>) write(x/);
putchar(x%+'');
}const int M = 2e5+;
int rt[M*],s[M*],ls[M*],rs[M*],cnt[M*],n,m,lst,x,y,k,a[M],b[M],T;
vector<int> aa[M],bb[M];
void Update(int &x,int y,int l,int r,int p,int opt){
x=++T;ls[x]=ls[y],rs[x]=rs[y],s[x]=s[y]+opt*b[p],cnt[x]=cnt[y]+opt;
if(l==r) return;
if(p<=mid) Update(ls[x],ls[x],l,mid,p,opt);
else Update(rs[x],rs[x],mid+,r,p,opt);
}
int Query(int x,int l,int r,int k){
if(l==r) return s[x]/cnt[x]*k;
int t=cnt[ls[x]];
if(k<=t) return Query(ls[x],l,mid,k);
return Query(rs[x],mid+,r,k-t)+s[ls[x]];
}
signed main(){
n=read(),m=read();
for(int i=,x,y,z;i<=n;i++){
x=read(),y=read();a[i]=b[i]=read();
aa[x].push_back(i),bb[y+].push_back(i);
}sort(b+,b+n+);int len=unique(b+,b+n+)-b-;
for(int i=,pos;i<=m;i++){
rt[i]=rt[i-];
for(int j=;j<aa[i].size();j++){
pos=lower_bound(b+,b+len+,a[aa[i][j]])-b;
Update(rt[i],rt[i],,len,pos,);
}
for(int j=;j<bb[i].size();j++){
pos=lower_bound(b+,b+len+,a[bb[i][j]])-b;
Update(rt[i],rt[i],,len,pos,-);
}
}lst=;
while(m--){
int x=read(),y=read(),z=read(),w=read();
k=(lst*y+z)%w+;
if(k>cnt[rt[x]]) writeln(lst=s[rt[x]]);
else writeln(lst=Query(rt[x],,len,k));
}return ;
}

然而悲伤的是:洛谷上暴力跑的最快惹qaq,排行榜第一页全是暴力,转行打暴力吧

upd:经测试bzoj上暴力跑得也贼快,上了第一页

贴一下暴力代码:

#include<bits/stdc++.h>
#define re register int
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}const int N=1e5+;
struct P{int s,e,p;}a[N];
int n,m,sum;long long ans=;
inline bool cmp(const P&a,const P&b){return a.p<b.p;}
int main(){
n=read(),m=read();
for(int i=;i<=n;i++) a[i].s=read(),a[i].e=read(),a[i].p=read();
sort(a+,a+n+,cmp);re x,q,w,e,k;
while(m--){
x=read(),q=read(),w=read(),e=read();
k=(1ll*q*ans%e+w)%e+;ans=sum=;
for(re i=;i<=n&&sum<k;++i)
if(a[i].s<=x&&x<=a[i].e)ans+=a[i].p,++sum;
printf("%lld\n",ans);
}return ;
}

【主席树】 [CQOI2015]任务查询系统的更多相关文章

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

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

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

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

  3. 主席树||可持久化线段树||离散化||[CQOI2015]任务查询系统||BZOJ 3932||Luogu P3168

    题目: [CQOI2015]任务查询系统 题解: 是一道很经典的题目.大体思路是抓优先级来当下标做主席树,用时刻作为主席树的版本.然而优先级范围到1e7去了,就离散化一遍.然后把每个事件的开始(s). ...

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

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

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

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

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

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

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

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

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

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

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

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

  10. P3168 [CQOI2015]任务查询系统

    题目地址:P3168 [CQOI2015]任务查询系统 主席树的模板题 更模板的在这儿:P3834 [模板]可持久化线段树 1(主席树) 形象的说,P3834是"单点修改,区间查询" ...

随机推荐

  1. NX二次开发-创建直线UF_CURVE_create_line与NXOpen->CreateLine

    NX11+VS2013 #include <uf.h> #include <uf_curve.h> #include <NXOpen/CurveCollection.hx ...

  2. 浅谈使用RestKit将服务器的Json直接映射为本地对象

    RestKit是一个主要用于iOS上网络通信的开源框架,除了发送请求与接受响应这些基本功能外,还附带coredata,以及将远程JSON映射为本地对象的功能.目前版本0.9.3,coredata还不是 ...

  3. Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限

    目录 1. 需要在spring-security.xml中配置验证过滤器,来取代spring-security.xml的默认过滤器 2. 配置securityMetadataSource,可以通过ur ...

  4. linux在不关机情况下新增硬盘的方法

    开机状态插入硬盘 不关机执行命令 echo "- - -" > /sys/class/scsi_host/host0/scan 注意 echo "- - -&quo ...

  5. 新手git遇到的问题

    1. 如何撤销git add,不小心执行了git add . 操作,但是又不能提交所有的文件,因为对应不同的分支,现在怎么样可以将git add 撤销回来? 解决:git reset HEAD(暂时尝 ...

  6. spark session 深入理解

    spark 1.6 创建语句 在Spark1.6中我们使用的叫Hive on spark,主要是依赖hive生成spark程序,有两个核心组件SQLcontext和HiveContext. 这是Spa ...

  7. Git 如何使用ssh上传或者同步/下载项目到github

    上传本地代码及更新代码到GitHub教程 上传本地代码 第一步:去github上创建自己的Repository,创建页面如下图所示: 红框为新建的仓库的https地址 第二步: echo " ...

  8. [转]springmvc+mybatis需要的jar包与详解

    1.antlr-2.7.6.jar:  项目中没有添加,hibernate不会执行hql语句 2.Aopalliance.jar: 这个包是AOP联盟的API包,里面包含了针对面向切面的接口,通常Sp ...

  9. pipenv的使用

    首先,确保pip install pipenv已经安装 1.新建一个文件夹,并在地址栏输入cmd,回车. 2.输入pipenv install,等待虚拟环境搭建完毕. 3.输入pipenv shell ...

  10. 手写代码注意点 -- HashMap

    1.定义 HashMap<String,String> hashMap = new HashMap<>(); <String,String>只需要写一遍 2.获取k ...