组队训练 K K - The Stream of Corning 2
K - The Stream of Corning 2
这个题目不是很难,因为给你的这个S是单调递增的,所以就用优先队列+权值线段树就可以很快的解决了。
这个+读入挂可以优化,不过不用也没关系。
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <bitset>
#include <string>
#include <algorithm>
#include <iostream>
#include <map>
#define inf 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3f
using namespace std;
const int maxn = 1e6 + ;
const int mod = 1e9 + ;
const int M = 1e6;
typedef long long ll;
int num[maxn * ]; void build(int id, int l, int r) {
num[id] = ;
if (l == r) return;
int mid = (l + r) >> ;
build(id << , l, mid);
build(id << | , mid + , r);
}
struct node {
int l, r, val;
node(int l=,int r=,int val=):l(l),r(r),val(val){}
bool operator<(const node &a)const {
return a.r < r;
}
};
priority_queue<node>que; void update(int id, int l, int r, int pos, int f) {
if (f) num[id]++;
else num[id]--;
if (l == r) return;
int mid = (l + r) >> ;
if (pos <= mid) update(id << , l, mid, pos, f);
else update(id << | , mid + , r, pos, f);
} int query(int id, int l, int r, int k) {
if (l == r) return l;
int mid = (l + r) >> ;
int val1 = num[id << ];
if (val1 >= k) return query(id << , l, mid, k);
return query(id << | , mid + , r, k - val1);
} inline int read() {
int X = ; bool flag = ; char ch = getchar();
while (ch<'' || ch>'') { if (ch == '-') flag = ; ch = getchar(); }
while (ch >= ''&&ch <= '') { X = (X << ) + (X << ) + ch - ''; ch = getchar(); }
if (flag) return X;
return ~(X - );
}
inline void write(int X) {
if (X < ) { putchar('-'); X = ~(X - ); }
int s[], top = ;
while (X) { s[++top] = X % ; X /= ; }
if (!top) s[++top] = ;
while (top) putchar(s[top--] + '');
putchar('\n');
} int main() {
int t = read();
for (int cas = ; cas <= t; cas++) {
printf("Case %d:\n", cas);
while (!que.empty()) que.pop();
int n = read();
memset(num, , sizeof(num));
while (n--) {
int opt;
scanf("%d", &opt);
if (opt == ) {
int l, val, r;
l = read(), val = read(), r = read();
update(, , M, val, );
que.push(node(l, r, val));
}
else {
int s, k;
s = read(), k = read();
while (!que.empty()&&que.top().r < s) {
update(, , M, que.top().val, );
que.pop();
}
if (k > que.size()) write(-);
else write(query(, , M, k));
}
}
}
return ;
}
组队训练 K K - The Stream of Corning 2的更多相关文章
- 蓝桥杯 算法训练 区间k大数查询(水题)
算法训练 区间k大数查询 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...
- 算法训练 区间k大数查询
http://lx.lanqiao.org/problem.page?gpid=T11 算法训练 区间k大数查询 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个 ...
- 蓝桥杯--算法训练 区间k大数查询
算法训练 区间k大数查询 时间限制:1.0 ...
- 算法训练 区间K大数
算法训练 区间k大数查询 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...
- 蓝桥杯算法训练 区间k大数查询
算法训练 区间k大数查询 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个 ...
- Java实现 蓝桥杯 算法训练 区间k大数
算法训练 区间k大数查询 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二 ...
- 组队训练1 回放(转载至cxhscst2's blog)
第一场组队训练……意料之中的爆炸. 开场先看题,H是斐波那契水题,qw把H切了. 同时czy看I题(排列),cst继续读其他题. czy尝试交I,PE. cst发现K是水题. cst上来敲K,WA ...
- 61. 从1到n,共有n个数字,每个数字只出现一次。从中随机拿走一个数字x,请给出最快的方法,找到这个数字。如果随机拿走k(k>=2)个数字呢?[find k missing numbers from 1 to n]
[本文链接] http://www.cnblogs.com/hellogiser/p/find-k-missing-numbers-from-1-to-n.html [题目] 从1到n,共有n个数字 ...
- 【组队训练】2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest
好多oj都崩掉了,于是打了cf.. 开始开的最后一题...尼玛题好长终于看完了...神题不会.... I过了好多人..看了下,一眼题...随便敲了下,1A ]; int main(){ int n, ...
随机推荐
- python 集合(set)和字典(dictionary)的用法解析
Table of Contents generated with DocToc ditctaionary and set hash 介绍 集合-set 创建 操作和访问集合的元素 子集.超集.相对判断 ...
- std::string::copy函数
size_t copy (char* s, size_t len, size_t pos = 0) const;
- Tomcat5启动流程与配置详解
标签:配置 tomcat 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto. ...
- 一道简单的SQL注入题
这是我真正意义上来说做的第一道SQL题目,感觉从这个题目里还是能学到好多东西的,这里记录一下这个题目的writeup和在其中学到的东西 link:https://www.ichunqiu.com/ba ...
- SSH、SCP命令及使用说明
SSH篇 1.ssh介绍 SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露 ...
- 最简单的懒人springcloud之Eureka(服务注册与发现)
本文开发软件是STS,是eclipse为springboot项目而生的一个软件,用这个软件开发spring的项目版本都会自己对应的,话不多说直接上代码 springboot版本2.1.8.RELEAS ...
- mybatis源码学习:一级缓存和二级缓存分析
目录 零.一级缓存和二级缓存的流程 一级缓存总结 二级缓存总结 一.缓存接口Cache及其实现类 二.cache标签解析源码 三.CacheKey缓存项的key 四.二级缓存TransactionCa ...
- python慎用os.getcwd() ,除非你知道【文件路径与当前工作路径的区别】
当你搜索 "获取当前文件路径" 时,有的文章会提到用os.getcwd(),但是这玩意要慎用! 废话不多说,直接上例子: E:\program_software\Pycharm\y ...
- 前端基础-HTML(2)
1. 什么是标签以及标签的分类: 在HTML页面中,带有“< >”符号的元素被称为HTML标签,如上节提到的 <HTML>.<head>.<body>都 ...
- 【<meta name="" content=">】的作用
一.语法: <meta name="name" content="string"/> 二.参数解析: 1.name项:常用的选项有keywords( ...