牛客七夕赛 D.拜托了,牛老师

2023-11-16

题意: 给定 n n n,将 n n n分解成 k k k个不同因数的乘积,问 k k k个数的最小和为多少
数据范围: 2 ≤ n ≤ 1 0 6 2\leq n \leq 10^6 2n106

题解:
倒序枚举将 x x x分解成 i i i x i \frac{x}{i} ix,即每次分解的 x x x n n n以内的最大 i i i倍数开始,依次递减 i i i
这样可以保证对于重复的数字分解不会被计入。

n = 16 n=16 n=16
f [ 2 ] = 2 f[2] = 2 f[2]=2
f [ 6 ] = 5 , f [ 3 ] = 3 f[6] = 5,f[3] = 3 f[6]=5,f[3]=3
f [ 12 ] = 7 , f [ 8 ] = 6 , f [ 4 ] = 4 f[12] = 7, f[8] = 6, f[4] = 4 f[12]=7,f[8]=6,f[4]=4
f [ 15 ] = 8 , f [ 10 ] = 7 , f [ 5 ] = 5 f[15]=8,f[10]=7,f[5]=5 f[15]=8,f[10]=7,f[5]=5
f [ 12 ] = m i n ( 8 , 7 ) = 7 , f [ 6 ] = 6 f[12]=min(8,7)=7,f[6]=6 f[12]=min(8,7)=7,f[6]=6
f [ 14 ] = 9 , f [ 7 ] = 1 f[14]=9,f[7]=1 f[14]=9,f[7]=1
f [ 16 ] = 10 , f [ 8 ] = m i n ( 6 , 8 ) = 6 f[16]=10,f[8]=min(6,8)=6 f[16]=10,f[8]=min(6,8)=6

可以发现在③时分解 x x x 4 4 4 x 4 \frac{x}{4} 4x,但此时 f [ 4 ] = ∞ f[4]=\infty f[4]=,不会更新 f [ 16 ] f[16] f[16]

代码: 原地址

#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
typedef long long ll;
const int N = 1000010;

ll f[N];

int main() {
    int n; scanf("%d", &n);
    memset(f, 0x3f, sizeof f);
    f[1] = 0;
    
    for(int i = 2; i <= n; ++i) {
        for(int j = n / i * i; j >= i; j -= i)
            f[j] = min(f[j], f[j / i] + i);
    }
    
    if(f[n] == n) ++f[n];
    printf("%lld", f[n]);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

牛客七夕赛 D.拜托了,牛老师 的相关文章

  • Java Stream peek的一些坑

    众所周知在Java中使用Stream能够很好地帮我们流处理对象 而Stream中有一个peek方法 它与map最大的区别是它没有返回值 一开始我是简单地把它当做一个void类型的处理方法去使用的 但是后来却发现程序执行到此处时 不进peek
  • 【华为OD机试真题2023B卷 JAVA&JS】跳格子2

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 跳格子2 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 小明和朋友玩跳格子游戏 有 n 个连续格子组成的圆圈 每个格子有不同的分数 小朋友可以选择从任意格子起跳 但是
  • 在Padavan上搭建udp53踩坑总结

    弄了差不多一下午 翻阅了许多帖子都没有能用的解决办法 人又不在家全程远程解决 希望对有相同需求的朋友有帮助 坑一 对于dnsmasq占用53端口的问题 查阅dnsmasq配置手册之后发现 在 etc dnsmasq conf中port缺省的
  • 2019哈工大计算机考研初试复试经历

    一 初试 1 准备阶段 1 1阶段一 我的第一阶段大约是在4月到6月 这阶段一方面我学业课程还比较忙 另一方面当时还要准备竞赛 所以准备不是很充分 只准备了数学 在外面上了数学考研辅导课 大班 不贵 对数学做了第一轮的复习 做了第一波习题
  • Istio二之流量劫持过程

    前面介绍了Istio依赖的Envoy的工作原理 接下来通过实际例子演示Istio是如何完成流量劫持以及流量转发的 首先准备部署两个pod 一个nginx pod作为服务端 一个toolbox pod作为客户端 toolbox只是一个能支持l
  • scanf()函数中%[]格式控制符用法

    此格式控制符的基本格式为 scanfset scanfset 有两种形式 一种是以非 字符开头的 scanset 表示在读入字符串时将匹配所有在 scanfset 中出现的字符 遇到非scanfset 中的字符时输入就结束 另外一种形式是以
  • filco蓝牙键盘配对流程_码字体验飞起的矮轴机械键盘 打字主力键盘妥妥的

    上篇文章 给我的 Macbook Pro 找一个好键盘 最后有小干货 最终决定买 Filco 蓝牙双模红轴 87 键位的键盘 可现实情况是被我退货了 并不是我改主意了 而是当时那个键盘确实有连键问题 还有空格嘎嘎响 连键指的是按 W 的时候

随机推荐