洛谷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 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对 ...
随机推荐
- 网络编程--使用UDP发送接收数据
package com.zhangxueliang.udp; import java.io.IOException; import java.net.DatagramPacket; import ja ...
- webpack+vue 我的视角(持续更新)
最近一直在研究webpack+vue的组合拳,现在分享一下: webpack就是一个项目管理工具,可以各种模块化加载,然后压缩,当然还有热加载技术(时灵时不灵..) vue是mv*模式的框架,组件化开 ...
- python[练习题]:实现Base64编码
要求自己实现算法,不用库. Base64简介: Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多 ...
- python之路--初识面向对象
一 . 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大 ...
- python之路--while, 格式化输出, 编码
一 . while循环 while 条件: 循环体(break, continue) while True: content = input('你想对我说什么:,输入你最帅退出') if conten ...
- iperf网络测试
iperf网络测试文档 地址: https://www.jianshu.com/p/942a9d9bc704
- 用MyEclipse自带工具生成WebService客户端代码
本文章主要是介绍如何利用已经发布了的Webservice的wsdl来自动生成java的客户端代码.注意:本方法需要你采用的java版本是1.5或者以上的版本,采用MyEclipse来自动生成代码. w ...
- JQ和JS获取元素
<ul> <li>John</li> <li>Karl</li> <li>Brandon</li> </u ...
- AutoCAD Civil 3D多版本插件安装包制作
程序的主要界面如下: 图1 图2 图3 图4 安装包使用Installshield 2016完成. 其中图3是重点,可以选择需要安装的版本,此功能的实现,主要是依靠Installshiel ...
- robotframework测试用例加入注释
*** Variables ***${HOST} 192.168.132.135${USER} username*** Test Cases ***Simple [Documentation] Sim ...