牛客假日团队赛9 A 乘积最大 (简单DP)
2024-09-05 23:45:47
题目:https://ac.nowcoder.com/acm/contest/1071/A
题意:给你一个串,然后给你m个乘号,用m个乘号分割开这个串,然后求分割可以求出的最大值
思路:首先范围很小
第一种:我把所有乘号分隔最多只有 C(40,6) 种方案,很少,我们直接dfs就可以算出来
第二种:dp做法,我们考虑数组 dp[n][m]
n代表当前位置,m代表用了m个乘号,然后数组值是到当前位置用m个乘号的最大值
我们考虑最后一段数是在哪里,我们枚举位置,然后算出最后一段的值*前面位置用m-1个乘号的最大值
转移方程:dp[i][j]=max(dp[i][j],dp[k][j-1]*最后一段数值)
#include<bits/stdc++.h>
#define maxn 1100
#define mod 1000000007
using namespace std;
typedef long long ll;
ll dp[][],n,m;
char str[maxn];
int main(){
cin>>n>>m;
cin>>str+;
for(int i=;i<=n;i++){
ll dex=,sum=;
while(dex<=i){
sum=sum*+str[dex]-'';
dex++;
}
dp[i][]=sum;
for(int j=;j<=m;j++){
for(int k=;k<=i-;k++){
ll dex=k+,sum=;
while(dex<=i){
sum=sum*+str[dex]-'';
dex++;
}
dp[i][j]=max(dp[i][j],dp[k][j-]*sum);
}
}
}
cout<<dp[n][m];
return ;
}
最新文章
- css012 css布局简介
- eclipse中的任务标记(TODO、FIXME、XXX)
- 利用Arduino快速制作Teensy BadUSB
- Beaglebone Black的启动
- UVa 1252 - Twenty Questions(记忆化搜索,状态压缩dp)
- (转载)MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途
- RII K25A 语音空中飞鼠 红外学习步骤
- Highcharts图表导出为pdf的JavaWeb实践
- HDU 4857 逃生(反向拓扑排序+优先队列)
- 51nod_1100:斜率最大
- 引入CSS的方式有哪些?link和@import的有何区别应如何选择【转载】
- GC调优入门笔记
- fdisk磁盘分区与挂载
- vscode使用wsl调试代码
- C++进阶--隐式类型转换
- android开发(27) 看看我的手机里都有什么传感器
- RabbitMQ入门_13_消息持久化
- UVA-10726 Coco Monkey(递推)
- An assembly specified in the application dependencies manifest
- C++ 类 、构造、 析构、 重载 、单例模式 学习笔记及练习