bzoj 3932: [CQOI2015]任务查询系统 -- 主席树 / 暴力
3932: [CQOI2015]任务查询系统
Time Limit: 20 Sec Memory Limit: 512 MB
Description
Input
Output
Sample Input
1 2 6
2 3 3
1 3 2
3 3 4
3 1 3 2
1 1 3 4
2 2 4 3
Sample Output
8
11
HINT
Source
好不容易打完了一个主席树,然而有人说直接暴力就行。。What ?! T_T
好吧,就当我在练习主席树好了。。


思路1: 主席树
以时刻为下标,优先级为区间建主席树。对于在一个区间[l,r]内存在的任务,可差分处理,拆成两个点,在l处出现次数加1,在r+1处出现次数减1。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
#define N 200010
#define M 10000010
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
ll sum[M];
int ls[M],rs[M],rt[M],w[M],lim,cnt,to[M];
inline void add(int l,int r,int x,int &y,int v)
{
y=++cnt;
w[y]=w[x]+(v>?:-);
sum[y]=sum[x]+v;
if(l==r) return;
ls[y]=ls[x];rs[y]=rs[x];
int mid=(l+r)>>;
if(abs(v)>mid) add(mid+,r,rs[x],rs[y],v);
else add(l,mid,ls[x],ls[y],v);
}
ll que(int t,int k)
{
int x=rt[t],l=,r=lim,mid;
if(w[x]<=k) return sum[x];
ll ans=;
while(l<r)
{
mid=(l+r)>>;
if(w[ls[x]]>=k)
{
x=ls[x];
r=mid;
}
else
{
k-=w[ls[x]];
ans+=sum[ls[x]];
x=rs[x];
l=mid+;
}
}
if(k) ans+=(ll)(l)*(ll)(k);
return ans;
}
struct qaz{int t,p;}q[N];
inline bool cmp(qaz a,qaz b){return a.t<b.t;}
int m,n,s,e,tp;
ll x,a,b,c,pre=,k;
int main()
{
m=read();n=read();
for(int i=;i<=m;i++)
{
s=read();e=read();tp=read();
lim=max(lim,tp);
q[i].t=s;q[i].p=tp;
q[i+m].t=e+;q[i+m].p=-tp;;
}
m<<=;
sort(q+,q+m+,cmp);
for(int i=;i<=m;i++) add(,lim,rt[i-],rt[i],q[i].p);
for(int i=m;i>;i--) if(q[i].t!=q[i+].t) to[q[i].t]=i;
for(int i=;i<=n;i++) if(!to[i]) to[i]=to[i-];
for(int i=;i<n;i++)
{
x=read();a=read();b=read();c=read();
k=(a*pre+b)%c;
k++;
pre=que(to[x],k);
printf("%lld\n",pre);
}
}
思路2:暴力。。。
#include<cstdio>
#include<algorithm>
#define M 100010
#define ll long long
int n,m,x,a,b,c,k;
ll pre=;
struct qaz{int s,e,p;}D[M];
bool cmp(qaz a,qaz b){return a.p<b.p;}
int main()
{
scanf("%d%d",&m,&n);
for(int i=;i<=m;i++) scanf("%d%d%d",&D[i].s,&D[i].e,&D[i].p);
std::sort(+D,+m+D,cmp);
while(n--)
{
scanf("%d%d%d%d",&x,&a,&b,&c);
k=+(a*pre%c+b)%c;pre=;
int d=;
for(int i=;i<=m&&d<k;i++)
if(D[i].s<=x&&D[i].e>=x){pre+=D[i].p;d++;}
printf("%lld\n",pre);
}
return ;
}
bzoj 3932: [CQOI2015]任务查询系统 -- 主席树 / 暴力的更多相关文章
- 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值离散化,然后对于每个时刻建一棵定义域是 ...
- BZOJ 3932: [CQOI2015]任务查询系统 (主席树板题)
就是裸的主席树,差分之后排序插入主席树就行了. 注意主席树查询的时候叶子节点要特判,因为本身是有size的 还有要开longlong CODE #include <cctype> #inc ...
- 2018.06.30 BZOJ 3932: [CQOI2015]任务查询系统(主席树)
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管理 ...
- BZOJ3932: [CQOI2015]任务查询系统 主席树
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 4869 Solved: 1652[Submit][St ...
- [CQOI2015]任务查询系统 主席树
[CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...
- 【BZOJ3932】[CQOI2015]任务查询系统 主席树
[BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...
- bzoj 3932 [CQOI2015]任务查询系统(主席树)
Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. 超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si ...
随机推荐
- Ice Cream Tower Gym - 101194D (贪心 + 二分 )
题目链接 : https://cn.vjudge.net/problem/Gym-101194D 题目大意 : 给你n个冰激凌球,让你用这些冰激凌球去垒冰激凌,要求是下面的这一个必须是他上面一个的两倍 ...
- ueditor和thinkphp框架整合修改版
基于tp官网上的一篇文章修改的 因为tp中所有目录其实都是性对于入口文件的 在原来的基础上略做修改后 已经做到 无论项目放在www下的任何位置 图片在编辑器中回填后都能正常显示! http://fi ...
- Codeforces 870E Points, Lines and Ready-made Titles 计数
题目链接 题意 给定二维坐标上的\(n\)个点,过每个点可以 画一条水平线 或 画一条竖直线 或 什么都不画,并且若干条重合的直线被看做同一条.问共可能得到多少幅不同的画面? 题解 官方题解 仆の瞎扯 ...
- 教你如何修改FireFox打开新标签页(NewTab Page)的行列数
FireFox的打开新建标签页(即NewTab Page)默认只能显示3x3个网站缩略图,这9个自定义的网站,非常方便快捷,什么hao123的弱爆了,本人从未用过此类导航网站,曾经用过的也只是abou ...
- OC学习篇之---类的延展
来源:http://blog.csdn.net/jiangwei0910410003/article/details/41775603 前一篇文章我们介绍了类的类目概念和使用:http://blog. ...
- linux/centos定时任务cron
https://www.cnblogs.com/p0st/p/9482167.html cron: crond进程 crontab修改命令 * * * * * command parameter & ...
- 7.Python3标准库--文件系统
''' Python的标准库中包含大量工具,可以处理文件系统中的文件,构造和解析文件名,还可以检查文件内容. 处理文件的第一步是要确定处理的文件的名字.Python将文件名表示为简单的字符串,另外还提 ...
- Effective C++笔记(四):设计与声明
参考:http://www.cnblogs.com/ronny/p/3747186.html 条款18:让接口容易被正确使用,不易被误用 1,好的接口很容易被正确使用,不容易被误用.你应该在你的所有接 ...
- 看懂 MySQL 慢查询日志
MySQL中的日志包括: 错误日志.二进制日志.通用查询日志.慢查询日志等等. 这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2) ...
- 以太坊go-ethereum客户端(三)两种全节点启动模式
这篇博客介绍一下go-ethereum全节点的两种启动模式:主网络快速启动和测试网络快速启动.这也是客户端所提供的两种启动方式,直接拿来使用即可.下面具体介绍一下使用方法. 主网络快速启动 其实,我们 ...