题意:有n个任务,第i个的存在时间是li~ri,有个权值。求t时刻第k大的权值。

这毒瘤...本来是前缀和 -> 主席树,我是树套树...然后光荣TLE。

其实很裸。一开始我写的是每个位置维护一个权值线段树。因为要片改点查,就用差分 + 树状数组搞定了。然后超时...

仔细思考,发现不带修可以直接用主席树。

把差分数组插入进去就行了,查询就是前缀和。这么一看好像主席树就是同时对多个数组做前缀和,每个数组就是线段树的一个位置。

我没用标记永久化,标记下传的时候直接新建的节点。

 #include <cstdio>
#include <algorithm>
#include <vector> typedef long long LL;
const int N = , lm = 1e7, M = ; int n, m, tot, rt[N];
int sum[M], ls[M], rs[M];
LL Val[M];
std::vector<int> d[N]; void insert(int x, int &y, int p, int v, int l, int r) {
if(!y || x == y) {
y = ++tot;
sum[y] = sum[x];
Val[y] = Val[x];
}
if(l == r) {
sum[y] += v;
Val[y] += v * r;
return;
}
if(!ls[y]) {
ls[y] = ls[x];
}
if(!rs[y]) {
rs[y] = rs[x];
}
int mid = (l + r) >> ;
if(p <= mid) {
insert(ls[x], ls[y], p, v, l, mid);
}
else {
insert(rs[x], rs[y], p, v, mid + , r);
}
sum[y] = sum[ls[y]] + sum[rs[y]];
Val[y] = Val[ls[y]] + Val[rs[y]];
return;
} LL ask(int k, int l, int r, int o) {
if(!o) {
return ;
}
if(l == r) {
return 1ll * std::min(k, sum[o]) * r;
}
int mid = (l + r) >> ;
if(k <= sum[ls[o]]) {
return ask(k, l, mid, ls[o]);
}
else {
return Val[ls[o]] + ask(k - sum[ls[o]], mid + , r, rs[o]);
}
} int main() {
scanf("%d%d", &n, &m);
for(int i = , x, y, z; i <= n; i++) {
scanf("%d%d%d", &x, &y, &z);
d[x].push_back(z);
d[y + ].push_back(-z);
} // prework
for(int i = ; i <= m; i++) {
if(!d[i].size()) {
rt[i] = rt[i - ];
continue;
}
for(int j = ; j < d[i].size(); j++) {
// d[i][j]
if(d[i][j] > ) {
insert(rt[i - ], rt[i], d[i][j], , , lm);
}
else {
insert(rt[i - ], rt[i], -d[i][j], -, , lm);
}
}
} LL lastans = ;
for(int i = , t, y, z, w; i <= m; i++) {
scanf("%d%d%d%d", &t, &y, &z, &w);
lastans %= w;
y %= w;
int k = (lastans * y + z) % w + ;
lastans = ask(k, , lm, rt[t]);
printf("%lld\n", lastans);
} return ;
}

AC代码

洛谷P3168 任务查询系统的更多相关文章

  1. 洛谷 P5020 货币系统

    题目描述 在网友的国度中共有$ n $种不同面额的货币,第 i种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为\(n\).面额数组为 \(a[1..n]\ ...

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

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

  3. 洛谷 P3168 [CQOI2015]任务查询系统 解题报告

    P3168 [CQOI2015]任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. 超级计算机中的任务用三元组\((S_i,E_i,P_i) ...

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

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

  5. AC日记——任务查询系统 洛谷 P3168

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

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

    #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #in ...

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

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

  8. 洛谷P1474 货币系统 Money Systems

    P1474 货币系统 Money Systems 250通过 553提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 母牛们不但创 ...

  9. 洛谷 P1474 货币系统 Money Systems(经典)【完全背包】+【恰好装满的最大方案数量】

    题目链接:https://www.luogu.org/problemnew/show/P1474 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对 ...

随机推荐

  1. ELK日志系统+x-pack安全验证

    根据之前已经搭好的ELK系统,现在加一个x-pack插件上去,不然谁拿到ip和端口都可以访问elasticsearch和kibana. 要的效果如下:打开kibana界面的时候要让其输入用户名密码才能 ...

  2. Swagger2常用注解及其说明 (转)

    Api 用在Controller中,标记一个Controller作为swagger的文档资源 属性名称 说明 value Controller的注解 description 对api资源的描述 hid ...

  3. k8s调度器、预选策略及调度方式

    一.k8s调度流程 1.(预选)先排除完全不符合pod运行要求的节点2.(优先)根据一系列算法,算出node的得分,最高没有相同的,就直接选择3.上一步有相同的话,就随机选一个 二.调度方式 1.no ...

  4. 取得数据表中前N条记录,某列重复的话只取第一条记录

    项目需要筛选出不重复数据,以前没有做过,第一反应就是利用distinct处理,但是弄了好久也没搞出来,大家有知道的望告知下. 这次筛选没有使用distinct ,是利用group by ,利用id为唯 ...

  5. Visual Studio for Mac中的ASP.NET Core

    所以你们都听到了#Build 2017的消息,Mac上的Visual Studio已经被完全发布,是一般的.为了庆祝这个版本,我将在我的Mac上写几篇关于构建一些不同的.net应用的帖子. 正如你已经 ...

  6. HttpWebRequest using Basic authentication

    System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); credentialCache.Add( ...

  7. Java自定义线程池-记录每个线程执行耗时

    ThreadPoolExecutor是可扩展的,其提供了几个可在子类化中改写的方法,如下: protected void beforeExecute(Thread t, Runnable r) { } ...

  8. python字典与集合操作

    字典操作 字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 语法: info = { 's1': "jack", 's3' ...

  9. kubernetes 简单service的例子

    首先建一个Deployment: apiVersion: apps/v1beta1 kind: Deployment metadata: name: httpd spec: replicas: 3 t ...

  10. 网页调起QQ聊天

    将QQ账号换成正常的QQ号即可,要确保这个QQ支持临时会话 <a href="http://wpa.qq.com/msgrd?v=3&uin=QQ账号&site=qq& ...