博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ746 整数划分
阅读量:5318 次
发布时间:2019-06-14

本文共 739 字,大约阅读时间需要 2 分钟。

该题是一道区间DP的题目,做了几道区间DP,说起来高大上,也就是DP在区间内的形式而已,核心思想还是要想到转移->规划。

题意是在n位数中间加m个称号,使得最终乘积最大。

状态转移方程如下:

dp[ i ][ j ]=max( dp[ i ][ j ],dp[ k ][ j - 1]*a[ k + 1][ i ])

a[ i ][ j ]表示第 i 位到第 j 位组成的数,要预处理一下。

再来说转移方程,无非两种情况,加或不加。

在k位不加称号,便是dp[ i ] [ j ],

如果加了称号,便是第k+1位到 i 位组成的数与dp [ k ][ j - 1](k位加了j-1个乘号的最大值)相乘的结果。

在以上两者中取个最大值,便形成了转移方程。

代码如下:

 

#include
#include
#include
using namespace std; #define ll long long ll dp[20][20],f,a[25][25]; int main() { int t,n,m,i,j,b[25]; char s[25],k; cin>>t; while(t--) { cin>>s>>m; n=strlen(s); memset(dp,0,sizeof(dp)); for(i=0;i

 

转载于:https://www.cnblogs.com/fantastic123/p/8988730.html

你可能感兴趣的文章
Linux无线工具详解(Wireless tools for Linux)
查看>>
RSS阅读器
查看>>
微信电脑版不断崩溃
查看>>
js链式调用
查看>>
数字统计
查看>>
20180620小测
查看>>
聊聊setTimeout和setInterval线程
查看>>
归并排序(转)
查看>>
Python_Xlrd&Xlwt
查看>>
项目执行过程
查看>>
SCM基础之过程描述
查看>>
不喜欢写测试的朋友看过来,与你分享写测试的经验 做一个爱写测试的程序员...
查看>>
介绍一下Objective-c常用的函数,常数变量
查看>>
windows编译libevent时报告“缺少print_winsock_errors.obj”的解决
查看>>
.cue 文件格式
查看>>
【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
查看>>
点击User Profile Service Application 报错
查看>>
VS2010插件之NuGet
查看>>
1.单机部署hadoop测试环境
查看>>
[设计模式]桥接模式
查看>>