首页 > 其他分享 >杭电多校赛第9场1002 Shortest path

杭电多校赛第9场1002 Shortest path

时间:2023-08-17 09:45:16浏览次数:37  
标签:long 杭电多 dfs path 校赛 include 1002 Shortest

给定一个数字n,每次可以选择一项。

令n = n - 1

令n = n / 2 , if n % 2 == 0

令n = n / 3 , if n % 3 == 0

求最少需要多少步可以让其变成1.

减1操作可以看作是为了除法做准备,连续超过两次减1再除2是不优的,连续超过三次减1再除2也是不优的。

可以根据下一步除2还是除3来分出两个分支。

用搜索表示就是

\[ dfs(n) = min(dfs(n / 2) + n \% 2 , dfs(n / 3) + n \% 3) + 1 \]

对于n来说,其可以搜索到的数字是 \(\lfloor\frac{n}{2^a3^b} \rfloor\) , 根据a,b的取值不同可以有\(log^2(n)\)个状态。

即使用记忆化之后,单次查询复杂度是\(log^2(n)\)

#include<unordered_map>
#include<iostream>
using namespace std;

unordered_map<long long , int> Dp;

int Dfs(long long n)
{
    if(n <= 1) return 0;
    if(Dp.count(n)) return Dp[n];
    return Dp[n] = min(Dfs(n / 2) + n % 2 + 1 , Dfs(n / 3) + n % 3 + 1);
}

int main()
{
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int T;
    long long n;
    cin >> T;
    while(T--)
    {
        cin >> n , cout << Dfs(n) << '\n';
    }
    return 0;
}

标签:long,杭电多,dfs,path,校赛,include,1002,Shortest
From: https://www.cnblogs.com/sybs5968QAQ/p/17636772.html

相关文章

  • 牛客多校赛第9场D Error Permutaition
    给定一个长度为n的排列,计算满足条件的子区间的个数。对于子区间\([l,r]\)要求任意区间第k小,不在区间的第k个位置上。\(n<=5000\)从每个值入手,设这个值为先,寻找对于x来讲是不合法的区间,也就是x在这个区间中是第k小,并且在区间的第k个位置上。1.如果固定区间左端点l,那么右端......
  • next.js 源码解析 - getStaticProps、getStaticPaths 篇
    ......
  • git checkout 分支报错 error: invalid path
    同事提交了一波代码后,发现怎么也切换不到这个分支了百度后发现windows电脑的git路径不支持空格和特殊符号,让同事把路径中空格或者特殊符号删了就可以解决了 ......
  • 模型超参数基本都没改,测试时加载模型报模型结构不匹配,设置模糊加载模型即:model.load_s
    原因多卡训练;单卡模糊加载进行测试。训练时,通过torch.nn.DataParallel(self.model)进行多卡并行训练;测试时,用单卡模糊加载保存的模型权重,很多模型参数都没有加载成功,自然会导致测试效果很差。解决方法测试时,使用多卡加载模型时,删掉'module.'前缀;或者用单卡加载模型进行测试。......
  • ClassPathResource使用简介
    ClassPathResource使用简介使用Spring的ClassPathResource来读取maven项目resource下的文件一般来说,我们项目的配置文件及静态资源都会放置在resources目录下。有时我们在项目中使用到resources目录下的文件,这时我们可以使用Spring下的Resouce接口来读取。具体代码如下Resourceres......
  • @RequestParam,@PathParam,@PathVariable等注解区别
    @RequestParam和@PathVariable注解是用于从request中接收请求的,都可接收参数@RequestParam是从request里取值@PathVariable是从一个URI模板里面来填充@RequestParam示例URL如下:http://localhost:8080/springmvc/hello/101?param1=java&param2=edge复制获取代码:......
  • Excel:Power Automate VS UiPath
    读取和写入差别:PowerAutomate需要通过激活Sheet来确定写入那个Sheet,VBA操作逻辑一样;而UiPath用一个写入控件就可以直接指定写入的Sheet,符合开发逻辑。 ......
  • Python文件路径解谜:深入剖析os.path系列函数的精髓
    介绍在Python中,os.path模块提供了一系列用于处理文件路径和文件系统的函数。它是Python标准库中os模块的一部分。本文将深入探讨os.path系列函数的使用方法,从入门到精通。目录导入os.path模块获取文件路径信息os.path.abspath():获取绝对路径os.path.dirname():获取目录......
  • 制作catvsdog_path_dataset.tfrecords的代码 数据集制作完成路径为: E:\catanddog\t
    #-*-coding:utf-8-*--##PROJECT_NAME:081200#Name:01#Author:GG#Date:2023/8/12importtensorflowastfimportosimportnumpyasnpimportcv2file_dir="E:\\catanddog\\train0"save_dir="E:\\catanddog\\train1"images=[]#每张图片的路径......
  • Delphi 2010 新增功能之: IOUtils 单元(6): TPath(结构体) 的方法与属性
    以后路径相关的处理,用IOUtils.TPath就很方便了.//较常用的方法:TPath.GetTempPath;         {获取临时文件夹路径}TPath.GetTempFileName;       {获取一个临时文件名}TPath.GetPathRoot();        {提取盘符,如:c:......