洛谷P3168 任务查询系统
题意:有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 任务查询系统的更多相关文章
- 洛谷 P5020 货币系统
题目描述 在网友的国度中共有$ n $种不同面额的货币,第 i种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为\(n\).面额数组为 \(a[1..n]\ ...
- 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]
题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...
- 洛谷 P3168 [CQOI2015]任务查询系统 解题报告
P3168 [CQOI2015]任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. 超级计算机中的任务用三元组\((S_i,E_i,P_i) ...
- ●洛谷P3168 [CQOI2015]任务查询系统
题链: https://www.luogu.org/problemnew/show/P3168题解: 主席树 强制在线? 那就直接对每一个前缀时间建一个线段树(可持久化线段树),线段树维护优先度权值. ...
- AC日记——任务查询系统 洛谷 P3168
题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...
- 洛谷P3168 [CQOI2015]任务查询系统
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #in ...
- 【洛谷 P3168】 [CQOI2015]任务查询系统(主席树)
题目链接 被自己的sb错误调到自闭.. 主席树的进阶应用. 把\(P_i\)离散化一下,得到每个\(P_i\)的排名,然后建一棵维护\(m\)个位置的主席树,每个结点记录区间总和和正在进行的任务数. ...
- 洛谷P1474 货币系统 Money Systems
P1474 货币系统 Money Systems 250通过 553提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 母牛们不但创 ...
- 洛谷 P1474 货币系统 Money Systems(经典)【完全背包】+【恰好装满的最大方案数量】
题目链接:https://www.luogu.org/problemnew/show/P1474 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对 ...
随机推荐
- mybatis:数据持久层框架
mybatis是一个持久层的框架,是Apache下的顶级项目. mybatis托管到goolecode下,再后来托管到GitHub下:https://github.com/mybatis/mybati ...
- KKT条件
kkt条件背下来容易.理解上还有问题 主要是lambda≥0和lambda*f(x)=0这两个条件懵逼. 下面说明一下为什么 参考:https://blog.csdn.net/newthinker_w ...
- Nginx 对上游使用SSL链接
L96 双向认证SSL指令示列 对下游使用证书指令 Syntax: ssl_certificate file; Default: — Context: http, server Syntax: ssl ...
- 提高SqlServer数据库的安全性,禁用掉sa账户
Sqlsever 数据库有两种登陆身份验证模式,一种是windows身份验证:一种是sqlserver 账户验证模式,在sqlserver 账户验证模式中,sa账户是大家所熟知的,并且sa也是内置的默 ...
- Educational Codeforces Round 53 (Rated for Div. 2) D. Berland Fair
题意:一个人 有T块钱 有一圈商店 分别出售 不同价格的东西 每次经过商店只能买一个 并且如果钱够就必须买 这个人一定是从1号店开始的!(比赛的时候读错了题,以为随意起点...)问可以买多少个 ...
- UOJ356 [JOI2017春季合宿] Port Facility 【启发式合并】【堆】【并查集】
题目分析: 好像跑得很快,似乎我是第一个启发式合并的. 把玩具看成区间.首先很显然如果有两个玩具的进出时间有$l1<l2<r1<r2$的关系,那么这两个玩具一定在不同的栈中间. 现在 ...
- web前端监控的三个方面探讨
一. js错误监控方式 1. 主动判断 我们在一些运算之后,得到一个期望的结果,然而结果不是我们想要的 // test.js function calc(){ // code... return va ...
- 【hihocoder 1628】K-Dimensional Foil(线性代数)
hihocoder 1627 The 2017 ACM-ICPC Asia Beijing Regional Contest 北京区域赛 B.K-Dimensional Foil 题意 给定N个点的前 ...
- Hdoj 1248.寒冰王座 题解
Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前. 死亡 ...
- 【CF809D】Hitchhiking in the Baltic States(Splay,动态规划)
[CF809D]Hitchhiking in the Baltic States(Splay,动态规划) 题面 CF 洛谷 题解 朴素\(dp\):设\(f[i][j]\)表示当前考虑到第\(i\)个 ...