nyoj746 http://acm.nyist.net/JudgeOnline/problem.php?pid=746

一道区间dp的题目:

设:a[i][j]为那一串数字中从第i位到第j位的数是多少

f[i][j]为从第一位到第i位分成j段的最大乘积,则有:

f[i][j]=max(f[u][j-1]*a[u+1][i])  (u=1toi-1)  u表示分割点

把1~u分成j-1份,其最大乘积就是f[u][j-1],再把剩下的u+1~i的数(a[u+1][i])作为最后一份,两者相乘便可以求出f[i][j].

边界:f[1~n][1]=a[1][1~n]

注意把j放在最外层循环。

代码:

//f[i][j]=max(f[u][j-1]*a[u+1][i])  (u=1toi-1)
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#define Size 25
using namespace std; long long T;
long long f[Size][Size];
long long a[Size][Size];
char c[Size];
int n,m; int ctoi(char c){
return c-'';
} int stoi(int i,int j){
int num=;
for(int k=j;k>=i;k--){
num+=ctoi(c[k])*pow(,j-k);
}
return num;
} int main(){
cin>>T; while(T--){
//初始化
memset(f,,sizeof(f));
memset(a,,sizeof(a)); //输入
cin>>c+>>m;
n=strlen(c+); //初始化a数组
for(int i=;i<=n;i++){
for(int j=i;j<=n;j++){
a[i][j]=stoi(i,j);
//cout<<a[i][j]<<' ';
}
//cout<<endl;
} //边界条件
for(int i=;i<=n;i++)f[i][]=a[][i];
//DP求解
for(int j=;j<=m;j++){
for(int i=j;i<=n;i++){
for(int u=;u<i;u++){
if(f[u][j-]*a[u+][i] > f[i][j]){
f[i][j] = f[u][j-]*a[u+][i];
}
}
}
} //输出最大乘积
cout<<f[n][m]<<endl;
} return ;
}

nyoj746 整数划分的更多相关文章

  1. nyoj746 整数划分(四)

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到 ...

  2. NYOJ746——整数划分(四)

    描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷..亲爱的你能帮帮他吗? 问题是我们经常见到的整 ...

  3. 51nod p1201 整数划分

    1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2, ...

  4. 2014北大研究生推免机试(校内)-复杂的整数划分(DP进阶)

    这是一道典型的整数划分题目,适合正在研究动态规划的同学练练手,但是和上一个随笔一样,我是在Coursera中评测通过的,没有找到适合的OJ有这一道题(找到的ACMer拜托告诉一声~),这道题考察得较全 ...

  5. 整数划分 (区间DP)

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ...

  6. nyoj 90 整数划分

    点击打开链接 整数划分 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk,  其中n1≥n2≥-≥nk≥1,k≥ ...

  7. 整数划分 Integer Partition(二)

    本文是整数划分的第二节,主要介绍整数划分的一些性质. 一 先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中  m1 m2 ... mi连续,比如5=1+4就不符合 ...

  8. 整数划分 Integer Partition(一)

    话说今天百度面试,可能是由于我表现的不太好,面试官显得有点不耐烦,说话的语气也很具有嘲讽的意思,搞得我有点不爽.Whatever,面试中有问到整数划分问题,回答这个问题过程中被面试官搞的不胜其烦,最后 ...

  9. 51nod1201 整数划分

    01背包显然超时.然后就是一道神dp了.dp[i][j]表示j个数组成i的方案数.O(nsqrt(n)) #include<cstdio> #include<cstring> ...

随机推荐

  1. windows + python3.5.2 + anaconda3 + dlib 安装配置

    首先下载boost库,根据提示:1)运行 bootstrap.bat.  生成三个文件,其中包括b2  --  bootstrap.bat2)运行b2  --     b2 install3) 利用b ...

  2. mac下的virtualbox启动失败处理

    不知从哪个版本开始,mac下的virtualbox建立vm以后,启动就提示什么驱动没有加载,google后,解决如下 sudo /Library/Application\ Support/Virtua ...

  3. "废物利用"也抄袭——废旧喷墨打印机和光驱DIY"绘图仪"

    很长时间没有写博客,因为各种各样的事情占去大块时间,只有零碎时间偶尔在CSDN逛逛也偶尔回几个帖子.很久以前就看到一些光驱DIY雕刻机之类的,很是向往,最近这几天得闲就TB了一套Arduino UNO ...

  4. FPGA时序优化简单窍门

    尽量用硬核,比如硬件乘法器,这个应该都知道. 结构上的pipeline,简言之就是“拆",最极端的情形是拆到源和目的Reg间只有基本的组合逻辑门,比如说~a & b之类...:当然F ...

  5. scanf在竞赛中的技巧总结ing

    前言 当输入流是一个字符串,我们需要在其中提取我们所需要的数值时,我们可以在读入阶段就完成数据的筛选工作. 使用方法 scanf("%ns", str); 表示读取长度为n的字符串 ...

  6. MSYS2环境搭建

    本机环境:Windows XP 32位MSYS2地址:http://sourceforge.net/projects/msys2/ 下载32位版本,地址:http://sourceforge.net/ ...

  7. offsetTop/offsetHeight scrollTop/scrollHeight 的区别

    offsetTop/offsetHeight   scrollTop/scrollHeight  这几个属性困扰了我N久,这次一定要搞定. 假设 obj 为某个 HTML 控件. obj.offset ...

  8. Linux学习笔记 -- stdin/stdout 重定向

    输入/输出重定向 Linux系统通常从一个叫标准输入的地方读取输入并且将一个命令的结果以写入到标准输出反馈给我们:默认情况下,这也是我们使用的终端(命令行).如果我们想改变输入和输出的方式,就需要使用 ...

  9. 【UVA】1589 Xiangqi(挖坑待填)

    题目 题目     分析 无力了,noip考完心力憔悴,想随便切道题却码了250line,而且还是错的,知道自己哪里错了,但特殊情况判起来太烦了,唯一选择是重构,我却没有这勇气. 有空再写吧,最近真的 ...

  10. Web api help page error CS0012: Type "System.Collections.Generic.Dictionary'2错误

    1.在asp.net Boilerplate项目中,Abp.0.12.0.2,.net framework4.5.2.下载后添加了webApi的helpPage功能,调试出现错误. dubug : a ...