COGS 2485. [HZOI 2016]从零开始的序列
2485. [HZOI 2016]从零开始的序列
★★ 输入文件:sky_seq.in
输出文件:sky_seq.out
简单对比
时间限制:1 s 内存限制:256 MB
【题目描述】
这个名字只是吸引你们这些死宅过来的。跟题目没关系。
现在Sky_miner给你一个序列,定义f(x)为(所有长度为x的区间中的最小值)的最大值.
要求输出f(1) .. f(n)
1 <= n <= 2*10^5
【输入格式】
第一行一个正整数n,含义如题
第二行共n个整数,为给定的序列,每一个整数 -10000 <= x <= 10000
【输出格式】
一行,共n个正整数,分别为f(1) f(2) .. f(n)
【样例输入】
5
3 4 1 3 9
【样例输出】
9 3 1 1 1
【来源】
HZOI 2016
分析:
大概有两种做法...
一种是比较直接的并查集做法...
就是我们把元素从大到小排序,依次加入序列中,然后并查集维护联通块的大小,更新答案,最后因为$f[i]>=f[i+1]$再$O(N)$更新一遍就好了...
一种是单调栈做法...
维护$l[i]r[i]$代表以$a[i]$为最小值所能扩展到最远的子序列,然后更新答案...
代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
//by NeighThorn
using namespace std; const int maxn=200000+5; int n,a[maxn],f[maxn],fa[maxn],siz[maxn],pos[maxn],vis[maxn]; inline int read(void){
char ch=getchar();int f=1,x=0;
while(!(ch>='0'&&ch<='9')){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
return f*x;
} inline int find(int x){
return fa[x]==x?x:fa[x]=find(fa[x]);
} inline bool cmp(int x,int y){
return a[x]>a[y];
} signed main(void){
freopen("sky_seq.in","r",stdin);
freopen("sky_seq.out","w",stdout);
n=read();memset(f,-1,sizeof(f));
for(int i=1;i<=n;i++)
a[i]=read(),fa[i]=i,siz[i]=1,pos[i]=i;
sort(pos+1,pos+n+1,cmp);
for(int i=1;i<=n;i++){
vis[pos[i]]=1;
if(pos[i]>1&&vis[pos[i]-1]){
int fx=find(pos[i]-1);
siz[pos[i]]+=siz[fx],fa[fx]=pos[i];
}
if(pos[i]<n&&vis[pos[i]+1]){
int fx=find(pos[i]+1);
siz[pos[i]]+=siz[fx],fa[fx]=pos[i];
}
if(f[siz[pos[i]]]==-1)
f[siz[pos[i]]]=a[pos[i]];
}
for(int i=n-1;i>=1;i--)
f[i]=max(f[i],f[i+1]);
for(int i=1;i<=n;i++)
printf("%d ",f[i]);puts("");
fclose(stdin);fclose(stdout);
return 0;
}
By NeighThorn
COGS 2485. [HZOI 2016]从零开始的序列的更多相关文章
- cogs 2632. [HZOI 2016] 数列操作d
2632. [HZOI 2016] 数列操作d ★★★ 输入文件:segment.in 输出文件:segment.out 简单对比时间限制:3 s 内存限制:512 MB [题目描述] ...
- COGS 2416.[HZOI 2016]公路修建 & COGS 2419.[HZOI 2016]公路修建2 题解
大意: [HZOI 2016]公路修建 给定一个有n个点和m-1组边的无向连通图,其中每组边都包含一条一级边和一条二级边(连接的顶点相同),同一组边中的一级边权值一定大于等于二级边,另外给出一个数k( ...
- cogs——2478. [HZOI 2016]简单的最近公共祖先
2478. [HZOI 2016]简单的最近公共祖先 ★☆ 输入文件:easy_LCA.in 输出文件:easy_LCA.out 简单对比时间限制:2 s 内存限制:128 MB [题 ...
- COGS 2199. [HZOI 2016] 活动投票
2199. [HZOI 2016] 活动投票 ★★ 输入文件:hztp.in 输出文件:hztp.out 简单对比时间限制:0.5 s 内存限制:2 MB [题目描述] 衡中活动很多, ...
- COGS 2334. [HZOI 2016]最小函数值
时间限制:1 s 内存限制:128 MB [题目描述] 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix2+Bix+Ci(x∈N∗).给定这些Ai.Bi和Ci,请求出所有函数的所 ...
- cogs——2419. [HZOI 2016]公路修建2
2419. [HZOI 2016]公路修建2 ★☆ 输入文件:hzoi_road2.in 输出文件:hzoi_road2.out 简单对比时间限制:1 s 内存限制:128 MB [题 ...
- cogs——2416. [HZOI 2016]公路修建
2416. [HZOI 2016]公路修建 ★☆ 输入文件:hzoi_road.in 输出文件:hzoi_road.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述 ...
- cogs 2478. [HZOI 2016]简单的最近公共祖先
2478. [HZOI 2016]简单的最近公共祖先 ★☆ 输入文件:easy_LCA.in 输出文件:easy_LCA.out 简单对比时间限制:2 s 内存限制:128 MB [题 ...
- COGS 2479. [HZOI 2016]偏序 [CDQ分治套CDQ分治 四维偏序]
传送门 给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数. 对于100%的 ...
随机推荐
- linux内核--定时器API
/**<linux/timer.h> 定时器结构体 struct timer_list { ........ unsigned long expires; --内核希望定时器执行的jiff ...
- 【组合数学】cf660E. Different Subsets For All Tuples
比较套路的组合数学题 For a sequence a of n integers between 1 and m, inclusive, denote f(a) as the number of d ...
- 七、MySQL 选择数据库
MySQL 选择数据库 在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库. 从命令提示窗口中选择MySQL数据库 在 mysql> 提示窗口中可以很简 ...
- 2D和3D效果
<style type="text/css"> #div1{ width: 200px; height: 200px; background-color:#aaa; c ...
- ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块
源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...
- java.lang.ClassCastException: com.sun.proxy.$Proxy53 cannot be cast to cn.service.impl.WorkinggServiceImpl
java.lang.ClassCastException: com.sun.proxy.$Proxy53 cannot be cast to cn.service.impl.WorkinggServi ...
- 用jq给img添加error事件
<img src="xxxx.jpg" alt="" /> <script> $(document).ready(function(){ ...
- python3.7 装饰器
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 装饰器 #装饰器 ''' 定义:本质就是一个函数,作用是为其他函 ...
- 为什么要用枚举实现Singleton--Java
原文地址:http://www.cnblogs.com/AprilCal/p/5426007.html 理由一:无需再考虑可序列化的情况 <effective java>第77条:对于 ...
- java高级编程技巧
1. boolean a= b==null;这句话很亮. public class Test { public static void main(String[] args) { String b=& ...