传送门

算法训练 最大的算式  
时间限制:1.0s   内存限制:256.0MB
问题描述
题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:
  N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:
  1*2*(3+4+5)=24
  1*(2+3)*(4+5)=45
  (1*2+3)*(4+5)=45
  ……
输入格式
输入文件共有二行,第一行为两个有空格隔开的整数,表示N和K,其中(2<=N<=15, 0<=K<=N-1)。第二行为 N个用空格隔开的数字(每个数字在0到9之间)。
输出格式
输出文件仅一行包含一个整数,表示要求的最大的结果
样例输入
5 2
1 2 3 4 5
样例输出
120
样例说明
(1+2+3)*4*5=120

题意:
给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。
852929 陈志阳 最大的算式 03-08 16:36 1.089KB C++ 正确 100 15ms 11.36MB 评测详情
852881 陈志阳 最大的算式 03-08 16:32 1.090KB C++ 错误 55 15ms 11.36MB 评测详情
852878 陈志阳 最大的算式 03-08 16:31 1.090KB C++ 错误 55 15ms 11.36MB 评测详情
852838 陈志阳 最大的算式 03-08 16:27 1.044KB C++ 错误 88 15ms 11.36MB 评测详情
846242 陈志阳 Torry的困惑(基本型) 03-07 17:34 810B C++ 正确 100 31ms 12.82MB 评测详情
846229 陈志阳 Torry的困惑(基本型) 03-07 17:32 788B C++ 运行超时 0 运行超时 84.28MB 评测详情
844016 陈志阳 最大的算式 03-07 11:30 981B C++ 错误 33 0ms 2.589MB 评测详情
题解:
也是心塞啊,非要去想有没有什么贪心的结论,导致一直wa
正解就是 记忆化区间dp
转移方程:
 1     for(i = l;i <= r -1;i++){
 2         for(cou = 0;cou <= kk - 1;cou++){
 3             ma = max(ma,dfs(l,i,cou) * dfs(i + 1,r,kk - cou - 1) );
 4         }
 5     }
 6     if(l - r != kk){
 7         for(i = l;i <= r -1;i++){
 8             for(cou = 0;cou <= kk;cou++){
 9                 ma = max(ma,dfs(l,i,cou) + dfs(i + 1,r,kk - cou) );
10             }
11         }
12     }

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <map>
 4 #include <cstring>
 5
 6 using namespace std;
 7
 8 #define N 105
 9 #define ll long long
10
11 ll dp[N][N][N];
12 ll n,k;
13 ll a[N];
14 ll sum[N];
15 ll ans;
16
17 ll dfs(ll l,ll r,ll kk)
18 {
19     if(dp[l][r][kk] != -1) return dp[l][r][kk];
20     if(kk == 0){
21         dp[l][r][kk] = sum[r] - sum[l - 1];
22         return dp[l][r][kk];
23     }
24     ll i,cou;
25     ll ma = 0;
26     for(i = l;i <= r -1;i++){
27         for(cou = 0;cou <= kk - 1;cou++){
28             ma = max(ma,dfs(l,i,cou) * dfs(i + 1,r,kk - cou - 1) );
29         }
30     }
31     if(l - r != kk){
32         for(i = l;i <= r -1;i++){
33             for(cou = 0;cou <= kk;cou++){
34                 ma = max(ma,dfs(l,i,cou) + dfs(i + 1,r,kk - cou) );
35             }
36         }
37     }
38     dp[l][r][kk] = ma;
39     return dp[l][r][kk];
40 }
41
42 int main()
43 {
44     //freopen("in.txt","r",stdin);
45     while(scanf("%I64d%I64d",&n,&k)!=EOF){
46
47     memset(dp,-1,sizeof(dp));
48     memset(sum,0,sizeof(sum));
49     ll i;
50     for(i = 1;i <= n;i++){
51         scanf("%I64d",&a[i]);
52         sum[i] = sum[i-1] + a[i];
53     }
54     ans = dfs(1,n,k);
55     printf("%I64d\n",ans);
56     }
57     return 0;
58 }

转载于:https://www.cnblogs.com/njczy2010/p/5254632.html

蓝桥杯 算法训练 最大的算式相关推荐

  1. 蓝桥杯 算法训练 幸运的店家

    蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...

  2. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  3. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  4. 蓝桥杯算法训练-24点(Python)

    问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...

  5. 蓝桥杯——算法训练——数字三角形

    蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...

  6. 蓝桥杯算法训练-强力党逗志芃

    持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...

  7. 蓝桥杯 算法训练 逗志芃的危机

    蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...

  8. 蓝桥杯算法训练-过河马

    蓝桥杯算法训练题解有兴趣的可以支持下. 题目 问题描述 在那个过河卒逃过了马的控制以超级超级多的走法走到了终点之后,这匹马表示它不开心了-- 于是,终于有一天,它也过河了! 由于过河马积累了许多的怨念 ...

  9. 蓝桥杯——算法训练——进击的青蛙

    问题描述 青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N.桥上的一些点有一些石子,这些点是无法跳上去的.青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端 ...

最新文章

  1. 使用多尺度空间注意力的语义分割方法
  2. Spark 调优之数据倾斜
  3. es6学习笔记-字符串的扩展_v1.0_byKL
  4. oracle表对比同步,Oracle表双向同步问题
  5. Spark RDD使用详解4--Key-Value型Transformation算子
  6. python matplotlib_Python の Matplotlib
  7. HDU2066:一个人的旅行
  8. JavaWeb项目前端规范(采用命名空间使js深度解耦合)
  9. oracle sql练习_使用Scrapy爬虫,并将数据存储到oracle
  10. matlab 图像常用函数
  11. 【重难点】【Java基础 07】变量类型、内部类、处理器指令优化
  12. DOM操作之确定元素大小
  13. 简书文章阅读量之小漏洞
  14. RecyclerView 之使用 ItemTouchHelper 实现交互动画
  15. 设计三极管放大电路有哪些技巧?尤其是假设
  16. spark Steaming 学习笔记
  17. 中国民商·商人第一村水稻专属种植基地落户永吉县
  18. 什么是Type-c降噪耳机?type-c接口耳机降噪方案
  19. explain mysql using filesort:_Mysql之EXPLAIN显示using filesort
  20. 【JPA】SpringData JPA

热门文章

  1. nyoj-915—— +-字符串
  2. php拉查询封装,php实现搜索类封装示例
  3. 【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
  4. 【Android APT】编译时技术 ( 开发编译时注解 )
  5. 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )
  6. 【Flutter】Flutter 应用主题 ( ThemeData | 动态修改主题 )
  7. Ticker 未释放导致的 CPU 占用过高
  8. 流程图软件draw.io
  9. [Swift]LeetCode649. Dota2 参议院 | Dota2 Senate
  10. UOJ42/BZOJ3817 清华集训2014 Sum 类欧几里得