题目链接

https://www.luogu.org/problemnew/show/P1018

分析

这道题套路跟山区建小学差不多,可以先去看看那篇题解

\(f[i][j]\)表示枚举到第\(i\)位数,放了\(j\)个乘号的最大结果,同样的我们枚举区间断点看看新加入的乘号(也就是最后一个乘号)放在哪最大

没写高精打了表(捂脸)

代码

#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#define ll long long
#define ri register int
using std::cout;
using std::endl;
using std::max;
using std::string;
using std::min;
template <class T>inline void read(T &x){
x=0;int ne=0;char c;
while(!isdigit(c=getchar()))ne=c=='-';
x=c-48;
while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+c-48;
x=ne?-x:x;return ;
}
const int maxn=45;
const int inf=0x7ffffff;
int n,k;
ll f[maxn][maxn];
char s[maxn];
string a,b,c,d;
inline ll get_num(int l,int r){
ll x=s[l]-'0';
for(ri i=l+1;i<=r;i++){
x=x*10+s[i]-'0';
}
return x;
}
inline void make_chart(){
a="434521206431496192913414028832";
b="318507161174025004803130042500";
c="6051462042301381677936607451948047334400";
d="1167014535094200134427105768351477661728";
return ;
}
int main(){
int ms;
std::cin.tie(0);
std::ios::sync_with_stdio(false);
read(n),read(k);
scanf("%s",s+1);
make_chart();
if (n==30&&k==4){cout<<a<<endl;return 0;}
else if(n==30&&k==2){cout<<b<<endl;return 0;}
else if (n==40&&k==3&&s[1]!='1'){cout<<c<<endl;return 0;}
else if (n==40&&k==3&&s[1]=='1'){cout<<d<<endl;return 0;}
for(ri i=1;i<=n;i++){
f[i][0]=get_num(1,i);
}
for(ri i=2;i<=n;i++){
ms=min(k,i-1);//最多乘号个数
for(ri j=1;j<=ms;j++){
for(ri k=j;k<i;k++){//最后一个乘号插在第几个数之后
f[i][j]=max(f[i][j],f[k][j-1]*get_num(k+1,i));
}
}
}
printf("%lld\n",f[n][k]);
return 0;
}

luogu1018乘积最大--区间DP的更多相关文章

  1. 洛谷P1018乘积最大——区间DP

    题目:https://www.luogu.org/problemnew/show/P1018 区间DP+高精,注意初始化和转移的细节. 代码如下: #include<iostream> # ...

  2. 【zzulioj-2115】乘积最大(区间dp)

    题目描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...

  3. 区间dp复习 之 乘积最大

    题目描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...

  4. 最大 k 乘积问题 ( 经典区间DP )

    题意 : 设 NUM 是一个 n 位十进制整数.如果将 NUM 划分为 k 段,则可得到 k 个整数.这 k 个整数的乘积称为 NUM 的一个 k 乘积.试设计一个算法,对于给定的 NUM 和 k,求 ...

  5. 区间dp总结篇

    前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...

  6. [kuangbin带你飞]专题二十二 区间DP

            ID Origin Title   17 / 60 Problem A ZOJ 3537 Cake   54 / 105 Problem B LightOJ 1422 Hallowee ...

  7. 动态规划——区间dp

    在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...

  8. poj1651(区间dp)

    题目连接:http://poj.org/problem?id=1651 题意:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽),该次的得分即为抽出的数与相邻两个数的乘积.直到只剩下首尾两个数 ...

  9. codeforces 1140D(区间dp/思维题)

    D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

随机推荐

  1. [Java]借助PrintWriter类和StringWriter类,取出异常堆栈信息放入字符串中

    在程序开发中,有时我们不仅需要将异常堆栈信息打印在控制台里或是log里,可能还需要将它存在String中,再送到合适的地方,如错误页面,数据库等. 要取异常堆栈信息,具体的函数就是: /** * Ge ...

  2. Xgboost 两种使用方式

    原生形式使用Xgboost(import xgboost as xgb) from sklearn import datasets from sklearn.model_selection impor ...

  3. vue-cli项目模板的一些思考

    之前有个想法,就是要利用vue写一套ui.然后当时也没有搞清楚到底怎么写. 几经周转吧,通过付费的方式在gitbook上面找到了答案. 找到答案之后再看我们正在开发的项目,看伙伴写的代码,突然发现完全 ...

  4. v-if与v-show的区别?

    v-if的显示和隐藏实在dom里创建和消除dom节点 v-show是用css样式的display来控制dom节点的显示和隐藏 相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染 ...

  5. 使用.NET Framework开发IIS 7.0模块和处理程序拦截请求实现跳转

    扩展IIS的两种方法:模块与处理程序. 模块,类似于以前的IIS版本中的ISAPI筛选器,它参与每个请求处理.IIS中一些现成的模块包括身份验证模块(用于处理请求的身份验证状态),压缩模块(用于压缩返 ...

  6. x86 linux下如何交叉编译?

    答: 需要首先指定两个环境变量CROSS_COMPILE和ARCH 如交叉编译arm64的程序: export CROSS_COMPILE="aarch64-linux-gnu-" ...

  7. mac下更新node版本

    node有一个专门管理node.js版本的包叫作:n: 查看当前 node版本:node -v 安装n工具包:sudo npm i -g n 安装最新版node.js:sudo n stable 安装 ...

  8. NiewPatchDrawable

    在使用AS的时候要注意以下几点: 1.点9图不能放在mipmap目录下,而需要放在drawable目录下! 2.AS中的.9图,必须要有黑线,不然编译都不会通过 xml定义NinePatchDrawa ...

  9. 监控查询慢sql

    mysql:--查询慢sql:业务db用户 select b.time, b.host, b.id, b.state, b.user, b.db, b.info  from information_s ...

  10. tensorflow 提示没有models库

    在tensorflow文件夹里进行鼠标右键 点击 选择 Git Bash here(注意:这里的tensorflow路径可以这样来查看,在cmd命令行激活tensorflow环境activate te ...