博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
B. Mike and Feet Codeforces Round #305 (Div. 1) (并查集)
阅读量:4922 次
发布时间:2019-06-11

本文共 2442 字,大约阅读时间需要 8 分钟。

B. Mike and Feet
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Mike is the president of country What-The-Fatherland. There are n bears living in this country besides Mike. All of them are standing in a line and they are numbered from 1 to n from left to right. i-th bear is exactly ai feet high.

A group of bears is a non-empty contiguous segment of the line. The size of a group is the number of bears in that group. The strength of a group is the minimum height of the bear in that group.

Mike is a curious to know for each x such that 1 ≤ x ≤ n the maximum strength among all groups of size x.

Input

The first line of input contains integer n (1 ≤ n ≤ 2 × 105), the number of bears.

The second line contains n integers separated by space, a1, a2, ..., an (1 ≤ ai ≤ 109), heights of bears.

Output

Print n integers in one line. For each x from 1 to n, print the maximum strength among all groups of size x.

 

 

蒟蒻不会单调队列的解法..等下好好研究下...

 

并查集的思路就是

先排序,由大到小,然后分别考虑每个位置的前后左右是否被联通,如果已经被联通,那么肯定比现在的数字要大;

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #define FR(i,n) for(int i=0;i
16 using namespace std;17 #include
18 const int maxn = 5e5 + 40;19 typedef long long ll;20 const int inf = 0x3fffff;21 void read(int &x) {22 char ch; bool flag = 0;23 for (ch = getchar(); !isdigit(ch) && ((flag |= (ch == '-')) || 1); ch = getchar());24 for (x = 0; isdigit(ch); x = (x << 1) + (x << 3) + ch - 48, ch = getchar());25 x *= 1 - 2 * flag;26 }27 28 //ll val[maxn],id[maxn];29 30 struct inof{31 int id,val;32 }p[maxn];33 bool cmp(inof a,inof b)34 {35 return a.val>b.val;36 }37 38 int res[maxn],top=0;39 int Rank[maxn],fa[maxn];40 int vis[maxn];41 42 43 int fin(int x)44 {45 if(x==fa[x])return x;46 else {47 return fa[x]=fin(fa[x]);48 }49 }50 int main() {51 int n;52 read(n);53 for(int i=1;i<=n;i++){54 read(p[i].val);55 p[i].id=i;56 fa[i]=i;57 Rank[i]=1;58 }59 sort(p+1,p+n+1,cmp);60 for(int i=1;i<=n;i++){61 int id=p[i].id;62 vis[id]=1;63 if(id!=n){64 if(vis[id+1]){65 int x=fin(id+1);66 fa[x]=id;67 Rank[id]+=Rank[x];68 }69 }70 if(id!=1){71 if(vis[id-1]){72 int x=fin(id-1);73 fa[x]=id;74 Rank[id]+=Rank[x];75 }76 }77 for(int j=top;j

 

 

转载于:https://www.cnblogs.com/DreamKill/p/9452639.html

你可能感兴趣的文章
EF Core 实现多租户
查看>>
SQL学习之计算字段的用法与解析
查看>>
GeoHash核心原理解析 - OPEN 开发经验库
查看>>
C#采用递归的方法求斐波那契数列的任意项的数值
查看>>
计算机网络课设之基于UDP协议的简易聊天机器人
查看>>
浅谈教你如何掌握Linux系统
查看>>
智能校服受到多数学生追捧
查看>>
PHP-FPM线上状态分析
查看>>
四个方面分析SEO如何提高网站的权重
查看>>
[USACO09MAR]Look Up
查看>>
js运动算法(更新ing)
查看>>
css复合选择器的权重
查看>>
Myeclipse按包装SVN
查看>>
今天talk的内容是zookeeper
查看>>
iOS开发UI篇章 15-项目中的常见文件
查看>>
潜在语义分析Latent semantic analysis note(LSA)原理及代码
查看>>
JSONObject与JSONArray的使用
查看>>
Android应用开发-小巫CSDN博客clientJsoup篇
查看>>
Junit使用教程(一)
查看>>
Java Utils工具类大全
查看>>