[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=3932

[算法]

首先 , 我们可以将(Si , Ei , Pi)转化为在Si处加入Pi , 在(Ei + 1)出删除Pi

建立可持久化线段树 , 维护每秒出现任务的个数和优先级的和 , 即可

时间复杂度 : O(NlogN)

[代码]

#include<bits/stdc++.h>
using namespace std;
#define MAXN 200010
typedef long long LL; int n , m , idx , version;
int S[MAXN] , E[MAXN] , P[MAXN] , root[MAXN * ] , cnt[MAXN * ] , tmp[MAXN * ] , lson[MAXN * ] , rson[MAXN * ] , rt[MAXN * ];
LL sum[MAXN * ];
multiset< int > ins[MAXN] , del[MAXN]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline void build(int &k , int l , int r)
{
k = ++idx;
cnt[k] = sum[k] = ;
if (l == r) return;
int mid = (l + r) >> ;
build(lson[k] , l , mid);
build(rson[k] , mid + , r);
}
inline void modify(int &k , int old , int l , int r , int x , int value)
{
k = ++idx;
lson[k] = lson[old] , rson[k] = rson[old];
cnt[k] = cnt[old] + value;
sum[k] = sum[old] + 1LL * tmp[x] * value;
if (l == r) return;
int mid = (l + r) >> ;
if (mid >= x) modify(lson[k] , lson[k] , l , mid , x , value);
else modify(rson[k] , rson[k] , mid + , r , x , value);
}
inline LL query(int &k , int l , int r , int x)
{
if (l == r) return 1LL * tmp[l] * min(x , cnt[k]);
int mid = (l + r) >> ;
if (cnt[lson[k]] >= x) return query(lson[k] , l , mid , x);
else return sum[lson[k]] + query(rson[k] , mid + , r , x - cnt[lson[k]]);
} int main()
{ read(n); read(m);
for (int i = ; i <= n; i++)
{
read(S[i]);
read(E[i]);
read(P[i]);
tmp[i] = P[i];
}
sort(tmp + , tmp + n + );
int len = unique(tmp + , tmp + n + ) - tmp - ;
for (int i = ; i <= n; i++)
{
P[i] = lower_bound(tmp + , tmp + len + , P[i]) - tmp;
ins[S[i]].insert(P[i]);
del[E[i] + ].insert(P[i]);
}
build(root[version = ] , , len);
for (int i = ; i <= n; i++)
{
for (multiset< int > :: iterator it = ins[i].begin(); it != ins[i].end(); it++)
{
int t = (*it);
modify(root[++version] , root[version] , , n , t , );
}
for (multiset< int > :: iterator it = del[i].begin(); it != del[i].end(); it++)
{
int t = (*it);
modify(root[++version] , root[version] , , n , t , -);
}
rt[i] = version;
}
LL pre = ;
for (int i = ; i <= m; i++)
{
LL xi , ai , bi , ci;
read(xi); read(ai); read(bi); read(ci);
int ki = (1LL * ai * (pre % ci) % ci + bi % ci) % ci + ;
printf("%lld\n" , pre = query(root[rt[xi]] , , n , ki));
} return ; }

[CQOI 2015] 任务查询系统的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  2. luogu P1260 工程规划

    题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是 ...

  3. Linux 开发板网络设置

    改动IP地址步骤: ①改动/etc/eth0-setting 命令:vi /etc/eth0-setting ②改动对应的信息.最后:wq退出 ③重新启动eth0 命令:/etc/init.d/ifc ...

  4. Oracle 12c agent install for linux

    安装Agent代理 在EM11g时,agent安装是通过在被监制主机端下载agent代理并安装,在EM12c版本号上,能够在EM12c服务端.通过"推送"的方式把agent代理在远 ...

  5. BUPT复试专题—打牌(2011)

    https://www.nowcoder.com/practice/82442ee76977479e8ab4b88dfadfca9f?tpId=67&tqId=29640&tPage= ...

  6. 根据wsdl反向生成webservice服务端(3种方法)

    前言 正常情况下,都是我们项目组创建一个webservice服务端,客户通过我们提供的wsdl地址生成客户端并进行访问:但是最近和一个国企做接口对接,他们却只提供给我们wsdl,需要我们根据wsdl生 ...

  7. [React] Persist Form Data in React and Formik with formik-persist

    It can be incredibly frustrating to spend a few minutes filling out a form only to accidentally lose ...

  8. PHP读取excel(5)

    如果数据量很大的时候,就需要用PHPExcel迭代器逐行读取,具体代码如下: <?php header("Content-Type:text/html;charset=utf-8&qu ...

  9. iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法

    本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ...

  10. openwrt hotplug

    由内核发出 event 事件. kobject_uevent() 产生 uevent 事件(lib/kobject_uevent.c 中), 产生的 uevent 先由 netlink_broadca ...