首页 > 其他分享 >F - Permutation Distance -- ATCODER

F - Permutation Distance -- ATCODER

时间:2023-01-03 12:33:27浏览次数:34  
标签:Distance gt Di -- ATCODER long https Permutation

F - Permutation Distance

https://atcoder.jp/contests/abc283/tasks/abc283_f

 

思路

最小生成树法:

https://zhuanlan.zhihu.com/p/595421879

 

动态缩减查找距离法

朴素思维: 如果按照Di定义,对于每个i,都需要计算n-1次进行比较,然后取得最小值

朴素思维中,有很多比较是不必要的。

从另外一个角度看对于每个i, 考虑其能够搜索的距离空间,

对于当前已经查找的最小Di, 决定了其当前的搜索空间的上届和下界, 对于上届和下界以外的点, ∣Pi​−Pj​∣+∣i−j∣ 是大于当前最小Di的,所以不要考虑。

参考 -- 动态缩减查找距离

https://atcoder.jp/contests/abc283/submissions/37706607

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
ll a[200005], n;
signed main(){
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];
    for(int i = 1; i <= n; i++){
        ll gt_i;//表示目前找到的Di最小值 
        gt_i = n * 2;
        for(int k/*表示i与j的距离*/ = 1; k <= gt_i; k++){// 若k>gt_i,则|p[i]-p[j]|+|i-j|=|p[i]-p[j]|+k>k>gt_i,即 |p[i]-p[j]|+|i-j|一定大于gt_i,不可能成为最小值。不用考虑。 
            if(i > k) gt_i = min(gt_i, abs(a[i] - a[i - k]) + k);//i前面k个数 
            if(i + k <= n) gt_i = min(gt_i, abs(a[i] - a[i + k]) + k);//i后面k个数 
        }
        cout << gt_i << ' ';
    }
    return 0;
}

 

标签:Distance,gt,Di,--,ATCODER,long,https,Permutation
From: https://www.cnblogs.com/lightsong/p/17021728.html

相关文章

  • 安全可靠快速地导出微信聊天记录
    12-2现在微信上的消息非常多,不管是生活也好还是工作也好,大多数人基本上已不再使用QQ,并且即使使用QQ,它也自带了导出功能,而微信不带这个功能。如果想要导出微信的聊天记录该咋......
  • 简单聊聊:Stream.reduce()用法解析
    基本使用先举一个简单的例子:算法题:Words题目描述每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度Ni为该单词的重量,你需要做的就是给出......
  • 2022最详细最快微信聊天记录备份&导出方案
     12-1在有些情况下,比如需要换电脑的时候,或者需要对某些重要的聊天对话做一些备份,就凭微信本身的功能,是不行的,微信根本不提供聊天记录导出功能。使用本文章的方法,可以自动地......
  • 电脑端微信dat文件怎么打开
    1-2电脑端的微信,在聊天过程中收发的图片都是以DAT文件保存在电脑里,加密的,一般是不能直接打开的。但是图片在电脑中占用的空间非常大,如果是平常工作的微信,会接收到很多图片,时......
  • 电脑版微信dat文件用什么软件打开
    1-4一般来说,凡是说到微信电脑版的DAT文件,指的都是聊天过程中收发的图片,加密保存在电脑里。这些文件正常情况下也只能在微信登录后,在微信里查看,因为微信加密的当然只有微信才......
  • css浮动的特点
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"cnotallow="IE=edge"><metaname="viewport"cnotallow="w......
  • 算法基础之全排列(递归)
    全排列(递归)全排列就是从第一个数字起每个数字分别与他后面的数进行交换。去重的全排列就是从第一个数起每个数分别与它后面非重复出现的数字交换。全排列(不去重)//搜索/......
  • 2022 倒带 - NutUI
    作者:京东零售于明明前言时光飞逝,流年似水,让我们倒带2022,回首这跌宕起伏一年走过的“升级之路”。NutUI表现如何?成绩单等着您打分!2022是NutUI在技术长廊中探索和成......
  • MongoDB的学习&复制集搭建
    一、MongoDB介绍1.1简介    MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一......
  • 第十九章《类的加载与反射》第4节:注解
    ​在8.10小节曾经简单的介绍过注解,但当时只是简单的介绍了3个注解的作用,本小节将详细讲解注解的相关知识。注解始于JDK1.5,在Java语言中以Annotation接口表示注解。注解其实......