P7726-天体探测仪(Astral Detector)【构造】
正题
题目链接:https://www.luogu.com.cn/problem/P7726
题目大意
一个长度为\(n\)的排列,给出\(n\)个可重集\(S_i\)表示所有长度为\(i\)的区间的最小值构成的集合。
求构造这个排列。
\(1\leq n\leq 800\)
解题思路
对于一个数字,如果在\(S_i\)中的出现次数小于\(i\)时,证明包含它的区间中拥有不是它为最小值的情况。
所以每个数字我们找到出现次数小于\(i\)的第一个\(S_i\),那么它离它左右两边比他小的数字的距离就是\(i-1\)。
然后考虑再求出另一边的距离,当某个时候\(S_i\)中不包含数字\(x\)时,那么证明\(x\)距离两边的距离和小于\(i\),找到一个位置就可以算出另一边的距离。
然后直接从小到大找满足条件的位置插入即可。
时间复杂度\(O(n^2)\)
code
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<set>
using namespace std;
const int N=810;
int n,c[N],L[N],R[N],ans[N];
set<int> s;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++){
int x;
memset(c,0,sizeof(c));
for(int j=1;j<=n-i+1;j++){
scanf("%d",&x);
c[x]++;
}
for(int j=1;j<=n;j++){
if(!L[j]&&c[j]!=i)L[j]=i-1;
if(!R[j]&&!c[j])R[j]=i-L[j];
}
}
R[1]=n-L[1]+1;
s.insert(0);s.insert(n+1);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(ans[j])continue;
int l=(*s.lower_bound(j))-j;
int r=j-*(--s.upper_bound(j));
if(l>r)swap(l,r);
if(l==L[i]&&r==R[i])
{ans[j]=i;s.insert(j);break;}
}
}
for(int i=1;i<=n;i++)
printf("%d ",ans[i]);
}
P7726-天体探测仪(Astral Detector)【构造】的更多相关文章
- Viola Jones Face Detector
Viola Jones Face Detector是Paul viola 和 Michael J Jones共同提出的一种人脸检测框架.它极大的提高了人脸检测的速度和准确率. 速度提升方面:利用积分图 ...
- vld(Visual Leak Detector) 内存泄露检测工具
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题.当程序越来越复 杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题.内存 ...
- 目标检测--SSD: Single Shot MultiBox Detector(2015)
SSD: Single Shot MultiBox Detector 作者: Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, ...
- SSD(single shot multibox detector)算法及Caffe代码详解[转]
转自:AI之路 这篇博客主要介绍SSD算法,该算法是最近一年比较优秀的object detection算法,主要特点在于采用了特征融合. 论文:SSD single shot multibox det ...
- 机器学习进阶-疲劳检测(眨眼检测) 1.dist.eculidean(计算两个点的欧式距离) 2.dlib.get_frontal_face_detector(脸部位置检测器) 3.dlib.shape_predictor(脸部特征位置检测器) 4.Orderdict(构造有序的字典)
1.dist.eculidean(A, B) # 求出A和B点的欧式距离 参数说明:A,B表示位置信息 2.dlib.get_frontal_face_detector()表示脸部位置检测器 3.dl ...
- 目标检测之线段检测---lsd line segment detector
(1)线段检测应用背景 (2)线段检测原理简介 (3)线段检测实例 a line segment detector (4)hough 变换和 lsd 的区别 --------------------- ...
- 带你读AI论文:NDSS2020 UNICORN: Runtime Provenance-Based Detector
摘要:这篇文章将详细介绍NDSS2020的<UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats& ...
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...
- 一步步构造自己的vue2.0+webpack环境
前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...
随机推荐
- yum clean all大坑解决
在Centos7系统中执行yum clean all 之后,发现yum的其他执行都报错了: 要解决,关键在这里: 把/var/cache/yum/ 下面的文件删除了 接下来,如果执行yum repol ...
- 针对Hbuilderx内置终端无法输入问题,总结了三种方法供大家参考
下图,是内置终端无法输入的现象(本人使用的第三种方案,解决了该问题) 第一种解决方案,也是网上推荐最多的方案: 打开Hbuilder安装路径下插件文件夹中的main.js文件:HBuilderX\pl ...
- mysql 局域网连接
下面分别简述操作: 配置虚拟机网络 默认方式是NAT,但为了让宿主机之外的其它计算机也能访问虚拟机,NAT方式配置起来有些复杂,这里推荐用桥接模式,关于VM的几种网络方式的区别,可以参考这篇文章配置好 ...
- Quartz任务调度(2)CronTrigger定制个性化调度方案
Cron表达式 1. 时间字段与基本格式 Cron表达式有6或7个空格分割的时间字段组成: 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 ,-*/ 2 分支 0-59 ,-*?/ 3 小时 ...
- Ant的使用(一)
<?xml version="1.0" encoding="UTF-8"?> <project name="projectName& ...
- mzy对于枚举的理解
关于enum,其实就是简化了的class,功能就是提供一个个独立的.特定含义的常量! 在JDK5.0之前我们想模拟enum的功能,只能使用自定义类的形式: 1.首先私有化构造方法,让外部不能new对象 ...
- JOB状态与并发
由于job每次被执行时都会创建一个新的实例, jobDetail实例时,要进行数据存储或者,特殊字段操作,需要每次schedul执行job时保留之前的数据, 那么就需要job在有状态下保持之前的数据信 ...
- IDEA常用设置及推荐插件
IDEA常用设置及推荐插件 本文主要记录IDEA的一些常用设置,IDEA与Eclipse的常用快捷键对比及推荐一些好用的插件. 基本设置 设置界面风格及修改外部UI尺寸大小 打开IDEA时设置不重新打 ...
- CodeReview杂谈
豆皮粉儿们,大家好,又见面啦,今天由字节跳动的"躬冯"带来一个 code review 的故事. 作者:躬冯 2020年元旦假期到来的时候,孙总攒了个局,又把当年一起创造过屎山的咱 ...
- JVM双亲委派模型及其优点
JVM双亲委派模型及其优点 什么是双亲委派模型? 双亲委派模型: 如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器, ...