NYOJ 746 - 正整数n划分为m段,求m段的最大乘积 【区间DP】

乘积最大的拆分题讲解-贪心算法 贪心算法 【题目描述】 将正整数 nn 拆分为若干个互不相等的自然数之和,问如何拆分可以使得它们的乘积最大? 输入格式 一个正整数 n。n≤10000。 输出格式 一行,包含若干个互不相等的自然数——乘积最大的一种拆分方案。 这些自然数需从小到大输出,两个自然数之间用单个空格隔开。 样例输入 15 样例输出 2 3 4 6 这道题是典型的利用贪心算法来找最优解的问题。先看题干,要求拆分成若干个数,并且各个数不相等。一开始我想的是把所有情况枚举出来,但是因为情况太多了。最好的方法就是将n拆分成从2开始的连续自 阅读详情

整数划分(四)

时间限制: 1000 ms  |  内存限制:65535 KB
描述

给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积

输入
第一行是一个整数T,表示有T组测试数据
接下来T行,每行有两个正整数 n,m ( 1<= n < 10^19, 0 < m <= n的位数);
输出
输出每组测试样例结果为一个整数占一行
样例输入
2
111 2
1111 2
样例输出
11
121
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
using namespace std;

typedef long long LL;

char n[25];
LL dp[25][25];
LL a[25][25];
 
int main ()
{
    int T, m;
    scanf("%d", &T);
    while(T--) {
        scanf("%s%d", &n, &m);
        int len = strlen(n);
        
        // 初始化
        for(int i=0; i<len; i++) {
            a[i][i] = n[i] - '0';
            for(int j=i+1; j<len; j++) {
                a[i][j] = a[i][j-1]*10 + n[j]-'0';
            }
        }

        for(int i=0; i<len; i++) {
            dp[i][1] = a[0][i];
            for(int j=2; j<=m; j++) {
                if(i+1 < j) {
                    dp[i][j] = 0;
                } else {
                    dp[i][j] = -1;
                    for(int k=1; k<=i; k++) {
                        if(dp[k-1][j-1]*a[k][i] > dp[i][j]) {
                            dp[i][j] = dp[k-1][j-1]*a[k][i];
                        }
                    }
                }
            }
        }
        printf("%lld\n", dp[len-1][m]);
    }
    return 0;
}

 

计算机网络之NAT的解释与实验配置 NAT 静态NAT 动态NAT easy_ip NAT服务器映射 阅读详情

相关推荐

滑模控制理论(SMC)概述

滑模控制理论(SMC)概述一、背景二、数学理论三、高维拓展四、分析 一、背景 滑模控制理论(Sliding Mode Control, SMC)是一种建立在现代控制理论基础上的控制理论,主要数学核心为李雅普诺夫函数。 滑模控制的核心思想是建立一个滑模面,将被控系统拉取到滑模面上来,使系统沿着滑模面运动。滑模控制的一个优势是无视外部扰动和不确定参数,采用一种比较“暴力”的方式达到控制的目的。 其思想和反步法有些类似,但数学实现起来更加方便而不抽象。相比反步法,滑模控制没有复杂的数学计算,也不会出现“微分爆炸”

高能阿博特的博客 6万+

【動態規劃】整數劃分

如何把一个正整数N(N长度1)个部分,使这N个部分的乘积最 大。N、M从键盘输入,输出最大值及一种划分方式。 输入数据: 第一行一个正整数T(T<=10000),表示有T 组数据。 接下来T行每行两个正整数N,M。 输出数据: 对于每组数据 第一行输出最大值。 第二行输出划分方案,将N 按顺序分成M个数输出,两个数之间用空格格开。 样例 输入文件:se

void* ptr = &OI; 1151

单波束与多波束声呐:从原理到应用场景的全面解析

本文全面解析了单波束与多波束声呐的工作原理、核心特点及应用场景。单波束声呐如精准的狙击手,适合高精度需求;多波束声呐则像高效的散弹枪,适用于快速测绘和大面积覆盖。文章还提供了选型指南和前沿发展趋势,帮助用户根据预算和需求选择最适合的声呐技术。

weixin_30872157的博客 218

整数划分

整数划分时间限制: 1 Sec 内存限制: 128 MB题目描述如何把一个正整数N(N长度<20)划分为M(M>1)个部分,使这N个部分的乘积最大。N、M从键盘输入,输出最大值及一种划分方式。输入数据:第一行一个正整数T(T<=10000),表示有T组数据。 接下来T行每行两个正整数N,M。 输入第一行一个正整数T(T<=10000),表示有T组数据。 接下来T行每行两个正整数N,M。输

slongle的专栏 1971

深入解析uncompyle6反编译pyc文件及常见错误修复指南

本文深入解析了使用uncompyle6工具反编译Python字节码文件(.pyc)的完整流程。针对实践中最高频的KeyError和Python版本范围限制两大错误,提供了详细的修复方案与步骤指南,并分享了处理复杂反编译结果的高级技巧与安全实践,是进行代码恢复、调试与分析的重要参考。

uber9的博客 534

ANSYS_APDL实战入门——从零开始掌握模态分析

本文为ANSYS APDL模态分析实战入门指南,通过一个悬臂梁案例,手把手教你从零开始掌握APDL命令流。内容涵盖从模型创建、材料定义、网格划分到边界条件设置、求解及后处理结果查看的全流程,帮助工程师快速上手结构动力学分析,避免共振风险。

egg99的博客 1128

正整数分拆使乘积最大

转自: 若干个正整数的和为S,求它们乘积的最大值F(S). 其实这是一个分解的问题,给定的S,分解成若干个正整数的和,然后求乘积的最大值。 S=a[1]+a[2]+…+a[n],F(S)=a[1]a[2]…a[n] 根据局部调整法分析所得到的A-G不等式,可以认为把S分成的都相等的n份是最好的,如果不能均分也应当使每个数尽量接近。 下面是题解,从每个a[k]的大小入手: 1)不可能存在

u013365671的专栏 1798

SCRFD算法解读及环境安装实践

SCRFD检测算法及环境安装

lishanlu136的博客 1009

noi.openjudge.cn 题目用到的头文件

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { return 0; }

sflsgfs的专栏 2350

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2332

ESP32-C3模组上实现蓝牙BLE配网功能(1)

ESP32-C3模组上实现蓝牙BLE配网功能(1)

phmatthaus的专栏 2279

NYOJ 746 整数划分(四)详解 (区间DP)

整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述        暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗?       问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n

K键盘里的青春K 1004

YOLOv11涨点改进 | 全网独家下采样改进、细节涨点篇 | TGRS 2025 | 引入PWD参数化小波下采样模块,减少下采样过程中小目标的关键细节丢失,即插即用,助力高效涨点发论文

本文提出了一种改进YOLOv11小目标检测性能的参数化小波下采样(PWD)模块。PWD通过小波变换保留目标细节信息,增强频率域特征表达,有效解决了传统下采样导致的小目标信息丢失问题。该模块采用双分支设计,结合自适应频率选择和空间补偿机制,在红外图像和低光场景中表现出更强的抗干扰能力。实验表明,PWD能显著提升YOLOv11对弱纹理和低对比度目标的检测精度,同时保持计算效率。文章详细介绍了PWD的结构原理、实现代码及在YOLOv11中的集成方法,为小目标检测提供了有效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 232

NYOJ746 整数划分 题解 区间DP

题目链接:http://nyoj.top/problem/746【题目描述】《746-整数划分(四)》暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗?问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘...

weixin_30457881的博客 208

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NYOJ746——整数划分(四)

整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述        暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗?       问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m - 1 个乘

Alex 1209

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

经典问题一.(插入乘号的整数划分)整数划分(四) nyoj 746

NYOJ 746 整数划分(四) (区间DP)解决问题: 给出一个长度为n的数,要在其中加上m-1个乘号,分成m段,使m段的乘积之和最大。解决办法: 首先预处理出: 不划分,其各个区间的值 dp[i][j] 代表: 前i位数,在划分成j段后的最大乘积和。 初始化: dp[i][1]: 不划分(即划分成1段)的时候,其值等于qujian[1][i]。 递推式: dp[i][j] = d

学无纸巾 807

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NYOJ746 整数划分(区间DP)

这道区间DP三个区间的范围还不是很懂。。。描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗? 问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积输入 第一行是一个

xx_ii 460

【NYOJ746】整数划分(四)

题目描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常happy,可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗? 问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积 输入 第一行是一个整数T,表示有T组测试数据 接下来T行,每行有两个正整数 n,m ...

anweiyun4308的博客 188

NYOJ 746---整数划分(四)(区间DP)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=746 题目大意:给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积 具体思路:首先用一个数组a[i][j]表示这个字符串从第i个位置到第j个位置的数是多大的,然后就开始DP就可以了。 dp[i][j]代表从第0到第i个位置,...

diaomeijiao3430的博客 200

区间DP 入门经典三道题

NYOJ 737:http://acm.nyist.net/JudgeOnline/problem.php?pid=737 代码:#include <cstdio> #include <iostream> #include <cstring> #define sf scanf #define pf printfusing namespace std; typedef long long LL; c

SolarDomo的博客 1480

nyoj746 整数划分 (区间DP4)

题意:给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积 分析:根据区间dp的思想,我们定义dp [ i ] [ j ]为从开始到 i 中加入 j 个乘号得到的最大值。那么我们可以依次计算加入1—-m-1个乘号的结果而每次放入x个乘号的最大值只需枚举第x个乘号的放的位置即可dp[i][j]=MAX(dp[i][j],dp[k][j−1]∗a[k+1

I good vegetable a! 1067

nyoj 746 整数划分(四)(区间DP)

整数划分(四)描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗? 问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积 输入第一行是一个整数T,表示有T组测试数据 接下来T行,每行有两个

Darkarts 529

NYOJ 746 整数划分(四)(区间dp)

整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述        暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗?       问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n

yjt9299的博客 374

NYOJ 746 整数划分(区间DP)

题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=746题目大意: 给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积。(n,m的数据范围较大,应该用long long)解题思路: 区间DP,用DP[i][j]表示n的前i位添加j-1个乘号的最大值,依次更新放入1~m-1个乘号的最大值

Jane_JXR的博客 545

NYOJ746 整数划分(四)(深搜DFS,区间DP)

题目; 整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述        暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗?       问题是我们经常见到的整数划分,给出两个整数 n

riba2534的博客 704
上一篇: NYOJ 176 、POJ 1664 —— m划分为n个正整数的划分个数
下一篇: NYOJ 90 —— 求正整数n划分为若干个正整数的划分个数
AcIsFun
博客等级 码龄10年 1粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值