题目传送门


分析

考虑每个数字一定会影响一定的范围,

那么可以记录每个数影响的最长区间和产生的个数,

那么通过这个可以解方程求出对于这个最长区间这个数的所在位置,

可以发现它可以满足一个树形结构,直接用笛卡尔树的方法遍历出来即可


代码

#include <cstdio>
#include <cctype>
#include <stack>
#define rr register
using namespace std;
const int N=811; stack<int>st[N];
int a[N][N],L[N],R[N],n,fi[N],se[N],ls[N],rs[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(int x){
if (ls[x]) print(ls[x]);
printf("%d ",x);
if (rs[x]) print(rs[x]);
}
signed main(){
n=iut();
for (rr int i=1;i<=n;++i)
for (rr int j=1;j<=n-i+1;++j)
++a[i][iut()];
for (rr int i=1;i<=n;++i)
for (rr int j=1;j<=n-i+1;++j)
if (a[i][j]) L[j]=i,R[j]+=a[i][j];
for (rr int i=1;i<=n;++i){
for (rr int j=0;j<L[i];++j)
if ((j+1)*(L[i]-j)==R[i])
{fi[i]=j,se[i]=L[i]-j-1; break;}
}
for (rr int i=n;i;--i){
if (!st[fi[i]].empty()) ls[i]=st[fi[i]].top(),st[fi[i]].pop();
if (!st[se[i]].empty()) rs[i]=st[se[i]].top(),st[se[i]].pop();
st[L[i]].push(i);
}
print(1);
return 0;
}

#笛卡尔树,构造#洛谷 7726 天体探测仪(Astral Detector)的更多相关文章

  1. 洛谷 P5044 - [IOI2018] meetings 会议(笛卡尔树+DP+线段树)

    洛谷题面传送门 一道笛卡尔树的 hot tea. 首先我们考虑一个非常 naive 的区间 DP:\(dp_{l,r}\) 表示区间 \([l,r]\) 的答案,那么我们考虑求出 \([l,r]\) ...

  2. POJ 1785 Binary Search Heap Construction(裸笛卡尔树的构造)

    笛卡尔树: 每个节点有2个关键字key.value.从key的角度看,这是一颗二叉搜索树,每个节点的左子树的key都比它小,右子树都比它大:从value的角度看,这是一个堆. 题意:以字符串为关键字k ...

  3. POJ 2201 Cartesian Tree ——笛卡尔树

    [题目分析] 构造一颗笛卡尔树,然后输出这棵树即可. 首先进行排序,然后用一个栈维护最右的树的节点信息,插入的时候按照第二关键字去找,找到之后插入,下面的树成为它的左子树即可. 然后插入分三种情况讨论 ...

  4. 笛卡尔树Cartesian Tree

    前言 最近做题目,已经不止一次用到笛卡尔树了.这种数据结构极为优秀,但是构造的细节很容易出错.因此写一篇文章做一个总结. 笛卡尔树 Cartesian Tree 引入问题 有N条的长条状的矩形,宽度都 ...

  5. [2018集训队作业][UOJ424] count [笛卡尔树+括号序列+折线法+组合数学]

    题面 请务必不要吐槽我的标签 传送门 思路 一个很重要的结论:原序列的一组同构的解等价于同一棵拥有$n$个节点的笛卡尔树 注意笛卡尔树的定义:父亲节点是区间最值,并且分割区间为左右部分 所以如果两个序 ...

  6. 2018 Multi-University Training Contest 1 H - RMQ Similar Sequence(HDU - 6305 笛卡尔树)

    题意: 对于一个序列a,构造一个序列b,使得两个序列,对于任意的区间 [l, r] 的区间最靠近左端点的那个最大值的位置,并且序列 b 满足 0 < bi < 1. 给定一个序列 a ,求 ...

  7. HDU 1506 Largest Rectangle in a Histogram(单调栈、笛卡尔树)

    题意:给定n个连续排列的矩形的高,矩形的宽都为1.问最大矩形覆盖. 例如:n = 7,h[i] = (2 1 4 5 1 3 3),最大覆盖为8. Sample Input 7 2 1 4 5 1 3 ...

  8. 牛客多校第一场 A Equivalent Prefixes 单调栈(笛卡尔树)

    Equivalent Prefixes 单调栈(笛卡尔树) 题意: 给出两个数组u,v,每个数组都有n个不同的元素,RMQ(u,l,r)表示u数组中[l,r]区间里面的最小值标号是多少,求一个最大的m ...

  9. [hdu1506 Largest Rectangle in a Histogram]笛卡尔树

    题意:http://acm.hdu.edu.cn/showproblem.php?pid=1506 如图,求最大的矩形面积 思路: 笛卡尔树:笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为key, ...

  10. 笛卡尔树-P2659 美丽的序列

    P2659 美丽的序列 tag 笛卡尔树 题意 找出一个序列的所有子段中子段长度乘段内元素最小值的最大值. 思路 我们需要找出所有子段中贡献最大的,并且一个子段的贡献为其长度乘区间最小值. 这--不就 ...

随机推荐

  1. locals()用法

    views.py代码 def test(request): if request.method == 'GET': return render(request,'test.html') elif re ...

  2. java+mysql数据库实现的学生管理系统

    说明: java+mysql数据库实现的学生管理系统 功能 实现增加学生.删除学生.修改学生.学生列表.查询学生功能 截图: 开发工具/技术 java  eclipse 价格:50元,有需要联系 微信 ...

  3. Jina AI x 矩池云Matpool |神经搜索引擎,一键构建

    图片.视频.语音等非结构化数据在快速增长,随着深度学习技术的不断升级,非结构化数据的搜索也逐渐形成可能.在这样的背景下,专注于神经搜索技术的商业开源软件公司--Jina AI,提出了神经搜索 (Neu ...

  4. ZYNQ SD卡 CDn管脚的作用

    ## 什么 是CDn? card detect, active low,用于指示当前SD卡是否插入,主机通过检测CD脚的状态来识别当前SD卡的状态. CD可以连接到MIO或者EMIO的任意空闲管脚,通 ...

  5. Html飞机大战(十四): 分数编辑和生命值设定

    好家伙,这章让我感受到了面向对象的优势了   1.分数设置 每个种类的敌机分数都设置好了, 那么当我们击毁不同的敌机后,加上不同的分数就行了 但是我们还是要想一下,   我要在哪里放这个分数增加的方法 ...

  6. canal实现mysql跨机房备份

    背景介绍 跨机房数据库数据备份 数据库增量异构系统分发(cache,mq等) 数据内容聚合分析组件 摘录作者的描述 原理图 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL ...

  7. You can't specify target table for update in FROM clause

    mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...

  8. 维基百科Wikipedia镜像网站列表(全部已被封)

    序号 网址 备注 1 https://chi.jinzhao.wiki/wiki (中文版) https://en.jinzhao.wiki/wiki/Main_Page (英文版)  支持多种语言. ...

  9. 【Azure K8S | AKS】在AKS中创建 StatefulSet 示例

    问题描述 [Azure K8S | AKS]在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例 [Azure K8S|AKS]进 ...

  10. 【Azure Function App】在ADF(Azure Data Factory)中调用 Azure Function 时候遇见 Failed to get MI access token

    问题描述 在ADF(Azure Data Factory)中,调用Azure Function App中的Function,遇见了 Failed to get MI access token Ther ...