ABC393F题解
大概评级:绿。
一看到这种题目,就知道肯定是数据结构题,我们首先用一个众所周知的二分来求出 \(pos\) 数组,\(pos_i\) 表示以 \(i\) 结尾的最长上升子序列的大小,然后将询问离线,弄一个 vector,命名 \(s\),把询问中每个 \(R_i\) 为 \(i(1 \le i \le n)\) 的询问存进 \(s_i\) 中,然后遍历每个 \(i(1 \le i \le n)\),每次先修改动态开点权值线段树上的点 \(a_i\),将它改为 \(pos_i\),然后遍历 \(s_i\),将 \(s_i\) 中存储的询问全部拿出来,然后查询即可。
总时间复杂度:\(O(n+n \log n+q+q \log q) = O(n \log n+q \log q)\)。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e7+5;
int a[N];
int low[N];
int pos[N];
struct node
{
int l;
int r;
int ls;
int rs;
int maxx;
}t[N];
struct node1
{
int x;
int y;
};
vector<node1>e[N];
int cnt;
void update(int &rt,int l,int r,int x,int v)
{
if(!rt)
{
rt = ++cnt;
t[rt].l = l;
t[rt].r = r;
}
if(t[rt].l == t[rt].r)
{
t[rt].maxx = max(t[rt].maxx,v);
return;
}
int mid = t[rt].l+t[rt].r>>1;
if(x<=mid)
{
update(t[rt].ls,l,mid,x,v);
}
else
{
update(t[rt].rs,mid+1,r,x,v);
}
t[rt].maxx = max(t[t[rt].ls].maxx,t[t[rt].rs].maxx);
}
int query(int rt,int l,int r)
{
if(!rt)
{
return 0;
}
if(l<=t[rt].l&&t[rt].r<=r)
{
return t[rt].maxx;
}
int mid = t[rt].l+t[rt].r>>1,maxx = 0;
if(l<=mid)
{
maxx = max(maxx,query(t[rt].ls,l,r));
}
if(r>mid)
{
maxx = max(maxx,query(t[rt].rs,l,r));
}
return maxx;
}
int ans[N];
signed main()
{
int n,_,o = 0;
scanf("%d %d",&n,&_);
for(int i = 1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int id = 0;
for(int i = 1;i<=n;i++)
{
if(a[i]>low[id])
{
low[++id] = a[i];
pos[i] = id;
}
else
{
int poss = lower_bound(low+1,low+id+1,a[i])-low;
low[poss] = a[i];
pos[i] = poss;
}
}
for(int i = 1;i<=_;i++)
{
int x,y;
scanf("%d %d",&x,&y);
e[x].push_back({i,y});
}
for(int i = 1;i<=n;i++)
{
update(o,1,1e9,a[i],pos[i]);
for(auto it:e[i])
{
ans[it.x] = query(o,1,it.y);
}
}
for(int i = 1;i<=_;i++)
{
printf("%d\n",ans[i]);
}
return 0;
}
总结:这道题的精髓在于将询问离线。
ABC393F题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- vue3 重置reactive数据
有一个formData数据字段,使用class创建一份初始数据与其对应,使用Object.assign进行重置 import { reactive } from 'vue' class InitFor ...
- iOS录制屏幕
iOS 录制屏幕 RPScreenRecorder 通过 RPScreenRecorder来录制屏幕 定义一个 RPScreenRecorder private var recorder: RPScr ...
- 中电金信:云原生时代IT基础设施管理利器——基础设施即代码(IaC)
在数字化转型.零售业务快速发展.信创建设驱动下,应用架构.技术架构.基础架构都已向云原生快速演进,银行业IT基础设施管理产生了非常大的变化,当前银行业,正在开展新一轮的核心应用系统重构.基础平台统一 ...
- 【sprinb-boot】@ComponentScan 跳过扫描 excludeFilters
@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Contr ...
- Zstd-数据压缩组件
Zstandard 简称Zstd,是一款快速实时的开源数据压缩程序,由Facebook开发,源码是用C语言编写的.相比业内其他压缩算法(如Gzip.Snappy.Zlib)它的特点是:当需要时,它可以 ...
- H2数据UNIX_TIMESTAMP兼容问题
开篇 今天某同事在spring结合H2实现mybatis DAO层单测的时候遇到一个问题,本着人道主义临时支持下我司大xx业务,就帮忙一起看了下,回想一下整个过程还是挺有意思的,就顺便写了这篇文章来 ...
- Qt/C++音视频开发72-倍速推流/音视频同步倍速推流/不改变帧率和采样率/低倍速和高倍速
一.前言 最近多了个新需求,需要倍速推流,推流界的扛把子obs也有倍速推流功能,最高支持到两倍速.这里所说的倍速,当然只限定在文件,只有文件才可能有倍速功能,因为也只有文件才能倍速解码播放.实时视频流 ...
- Qt编写安防视频监控系统59-子模块3图文警情
一.前言 图文警情子模块是为了适应现在各种人脸识别报警应用而增加的,参照现在各种视频监控手机app报警提示信息,基本上都是带了时间.内容.图片缩略图(单击可以查看大图),这种信息排列形式在现代的软件中 ...
- Qt编写的项目作品12-简易视频播放器
一.功能特点 多线程实时播放rtsp视频流. 支持windows+linux+mac. 多线程显示图像,不卡主界面. 自动重连网络摄像头. 可设置边框大小即偏移量和边框颜色. 可设置是否绘制OSD标签 ...
- HTTP协议中,Content-Type(内容类型)讲解
在基于HTTP协议进行Web开发时,客户端请求经常会发送请求文件或媒体的类型(Type),为了编译理解和总体把握,在本人总结了一下常用的文件或媒体类型,支持的类型大致有以下9种: 文本:text.图像 ...