wikioi1017 乘积最大
今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:
设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。
同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:
有一个数字串:312, 当N=3,K=1时会有以下两种分法:
1) 3*12=36
2) 31*2=62
这时,符合题目要求的结果是:31*2=62
现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。
程序的输入共有两行:
第一行共有2个自然数N,K(6≤N≤40,1≤K≤6)
第二行是一个长度为N的数字串。
结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数)。
4 2
1231
62
题解:a[i,j]表示子串st[i,j]的值,f[i,j]表示前i个数放j个乘号的最大值,f[i,j]=max(f[i-1,j-1]+a[k,i]) j-1<k<i
vara,f:array[0..50,0..50] of int64;n,m,i,j,k:longint;st:string;procedure init;
vari,j:longint;
beginreadln(n,m);readln(st);for i:=1 to n dofor j:=i to n doa[i,j]:=a[i,j-1]*10+ord(st[j])-48;for i:=1 to n dof[i,0]:=a[1,i];
end;function max(a,b:longint):longint;
beginif a>b then exit(a) else exit(b);
end;begininit;for i:=1 to m dofor j:=1 to n dofor k:=1 to j-1 doif k-i>=0 then f[j,i]:=max(f[j,i],f[k,i-1]*a[k+1,j]);writeln(f[n,m]);end.
wikioi1017 乘积最大相关推荐
- LeetCode简单题之两个数对之间的最大乘积差
题目 两个数对 (a, b) 和 (c, d) 之间的 乘积差 定义为 (a * b) - (c * d) . 例如,(5, 6) 和 (2, 7) 之间的乘积差是 (5 * 6) - (2 * 7) ...
- hdu2006 求奇数的乘积【C++】
求奇数的乘积 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 蒟蒻吃药计划-治疗系列 #round 2 合并石子+乘积最大
1.合并石子 <信息学奥赛一本通>第五版 P371 第三节 T1 我就直接开始讲吧: Warning:这个题目和 合并果子 不一样!不一样!不一样!不一样!不一样!不一样!不一样!不一样! ...
- 不相交轮换的乘积怎么求_谁能告诉我 轮换的乘积 怎么做?具体题目是
展开全部 把轮换的乘积看成变换的乘积就行了,轮换本身就是变换,上式看成Ψ1Ψ2Ψ3,任给一个元素a,显然像为Ψ32313133353236313431303231363533e59b9ee7ad943 ...
- leetcode-152 乘积最大子序列
题目描述: 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6 ...
- SDUTOJ 1293 乘积最大的分解(数论)
乘积最大的分解 思路: 让分解出来的因子有尽可能多的3,剩下的用2补全. 最开始思路错了,WA了好长时间= =! 函数中n == 1的情况应该是不用,经测试数据中没有这组. *注意用 long l ...
- LeetCode实战:除自身以外数组的乘积
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given an ar ...
- 编程——无序数组中找到最大乘积(python)
题目 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 输入共2行,第一行包括一个整数n,表示数组长度 第二行为 ...
- D.Digits 思维dp 取log乘积变成加法
题目链接 题目大意: 就是给你nnn个数和一个数字ddd,问你从这n个数中挑出若干个数,使得这些数的乘积最后的一个数字是d,并且结果是最大的,问你要挑出哪些数字? n∈[1,1e5],ai∈[1,10 ...
最新文章
- Java项目:在线拍卖竞价系统(java+SpringBoot+FreeMarker+Mysql+redis)
- Deep Learning(深度学习)学习笔记整理系列 一
- IOS中UITableView异步加载图片的实现
- MySQL order by 是怎么工作的?
- 【Ubuntu-Docker】ubuntu16.04(18.04)Docker安装配置与卸载
- 【nyoj-456】 邮票分你一半 (dp,0-1背包的中点问题)
- cad转dxf格式文件太大_想知道DWG、DWT、DWS和DXF是什么吗?从了解4种CAD图形格式开始吧...
- 码农节快乐|一个系统,高效解决复杂事件采集-计算-实时触达
- 重要的气质-个性决定命运
- mysql geometry 附近的人_mysql中geometry类型的简单使用(搜索附近的人)
- 腾讯云加码 IDaaS,加速 SaaS 时代进程
- JPA的主键生成策略
- 利用FolderSync实现本地FTP备份同步
- c++ discards qualifiers
- 微信小程序上传图片(预览 删除 限制图片大小、张数)
- 杰奇小说站PC端跳转WAP端实现方式
- WIN10安装与升级的方法
- Android 8.1 DisplayPowerController(五) 自动调节亮度(2)——算法
- html银白色,纯CSS打造银色MacBookAir(二)_html/css_WEB-ITnose
- 大数据实战|怎样实现大型电商热销榜?