题意:
给出n个数字,顺次取出m个数,按照给出的m个运算符,依次去运算于k。保证m个运算符都用掉,求算计算结果的最大值。
思路:
观察到m很小只有5,5x1000的复杂度是够用的,所以可以找找状态转移方程,推导关系。
我们记dp[i][j]取到第i个数,用掉第j个运算符的最大值。
容易想到两种结果,
一种是:dp[i][j]= dp[i-1][j-1]~运算符[j]~a[i];也就是取当前ai的情况;
另一种是:dp[i][j]= dp[i][j-1]; 也就是不取ai,转移上一次用掉j个运算符的情况;

一开始我以为就这两种够了,wa了三发。
分享一个易错样例:
1
5 3 6
-5 3 -4 -1 2
*+/
这个例子里,我们需要((6*-5)+-4)/-1得到最大答案,但可以发现,这个最大值是从中间最小值转移过来的(最小值/-1的情况),那么我就记了一个pd,用类似的方法求最小值,然后把最小值得到的最大值转移到dp的情况也算上,结果就完整了。
果然还是不能想得太简单,具体看代码。
初始化有些小细节还要多斟酌一下。


#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll calc(ll x,char op,ll y)
{switch(op){case '+':return x+y;case '-':return x-y;case '*':return x*y;case '/':return x/y;}
}
int T,n,m;
ll k;
ll a[1005],dp[1005][6],pd[1005][6];
char f[15];
int main()
{scanf("%d",&T);while(T--){memset(dp,0x80,sizeof(dp));memset(pd,0x3f,sizeof(pd));scanf("%d %d %lld",&n,&m,&k);for(int i=1;i<=n;i++)scanf("%lld",a+i);scanf("%s",f+1);for(int i=0;i<=n;i++)pd[i][0]=dp[i][0]=k;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(i<=m&&j>i)break;dp[i][j]=max(dp[i-1][j],calc(dp[i-1][j-1],f[j],a[i]));pd[i][j]=min(pd[i-1][j],calc(pd[i-1][j-1],f[j],a[i]));dp[i][j]=max(dp[i][j],calc(pd[i-1][j-1],f[j],a[i]));pd[i][j]=min(pd[i][j],calc(dp[i-1][j-1],f[j],a[i]));}printf("%lld\n",dp[n][m]);}return 0;
}/*
5
5 5 6
-1 -1 -1 -1 -1
-----
2 1 5
2 3
/
3 2 1
1 2 3
++
4 4 5
1 2 3 4
+-*/

JSK-107305丨ICPC焦作站网赛 B丨dp相关推荐

  1. Icpc 焦作站现场赛 E 题解

    这道题当时做的时候推不出来,晚上去找题解,不是Java,就是Python,对于只会c/c++的萌新,哎,难受.硬着头皮看了好久,大概懂了思路,第二天自己把前天的又推了一遍发现是自己计算错误的问题,要被 ...

  2. 2018 icpc 焦作站现场赛 E题题解

    水题没人写题解,都直接上Java代码--那我写一个. 计蒜客题面:https://nanti.jisuanke.com/t/A2203 题意:如果i是完全平方数(>=4)的倍数,那么i号电阻的阻 ...

  3. 2018 年 ACM-ICPC 焦作站现场赛感受

    今天下午四点半,ACM-ICPC国际大学生程序设计竞赛亚洲区域赛/焦作站圆满结束.首先,感谢河南理工大学给了我们这样的一个可以与国际接轨的平台,更要感谢王老师的辛苦付出. 弱校举办这么大型的比赛实属不 ...

  4. 2018 icpc 焦作站 自闭记

    今年三站,秦皇岛,徐州,焦作.全部打铜,心情不是一般的失落. 可能我真的只有铜牌的水平吧. 我们5题 14个小时罚时,离银牌线还差5个小时罚时. 如果我码力再强一点,F题不出bug 这里就能少3个小时 ...

  5. Gym 102028D Keiichi Tsuchiya the Drift King(2018 ICPC 焦作站 D 题) 计算几何

    去年暑假集训了两个月就去了焦作,这个题一直卡着到最后也没做出来,很遗憾的在人生中第一场 ICPC 比赛打了铁.当时也没有补题的习惯,这个题知道了大致做法后就放过了.今年准备银川赛区,翻出了往年的比赛真 ...

  6. 2018年11月25日ICPC焦作站参赛总结

    可能就这么退役了吧. 对这次ICPC还是比较有信心的,毕竟心态都放平和了. 路途很波折,热身赛还是赶上了. 等到了正赛的时候,开场看出了A题的签到,签到肯定是我来签的,11分钟签完了这道题之后,开始看 ...

  7. 2018ICPC焦作站网络赛 Transport Ship 多重背包

    这道题乍一看确实像完全背包,,可是再一想又不会了..状态转移方程怎么写QAQ..果然我还是太菜了55555...后来看了大佬队友的代码,豁然开朗Orz 这道题确实挺考验对多重背包的理解和怎么写状态转移 ...

  8. ICPC焦作站(E、F)+思维+树上dp

    这场比赛依旧是三道题,E其实比我们出的D难一点,但确实在能力范围之内,出了就保底铜牌了,出的快的话说不定有银.策略很重要 E. Resistors in Parallel 大数+打表找规律. 最后得出 ...

  9. 2018ACM-ICPC 焦作站现场赛 F. Honeycomb(BFS求最短路,卡memset)

    F. Honeycomb 从前不信命,从这道题开始,我信了. 我就是没有拿牌子的命.这道题或者说这个memset,击碎了我所有对ACM的美好记忆. #include<bits/stdc++.h& ...

最新文章

  1. 微信登录提示逻辑不正确_Axure RP 9 教程:模拟登录注册
  2. bugzilla dbd-mysql_在Red Hat Linux下安装配置Bugzilla
  3. CListCtrl 使用技巧
  4. 雨敲窗python_雨敲窗Python:类
  5. 导出滴滴行程单_身穿统一的绿马甲!滴滴货运小哥上线首日即爆单
  6. 原来这样调优可以攻破MySQL性能瓶颈
  7. 天梯赛 喊山 bfs
  8. 作为唯一索引_Mysql什么情况下不走索引?
  9. linux 8002端口,linux – 如何限制反向SSH调整端口?
  10. Linux进程管理工具 Supervisor详解
  11. mysql锁的应用场景_浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
  12. 后台异常 - Content is not allowed in prolog
  13. Errors running builder 'DeploymentBuilder' on proj
  14. 安徽省计算机水平模拟考试系统,中学信息技术考试练习系统——安徽省版
  15. oracle数据库菜鸟入门
  16. 如何给下属布置工作?多人团队便签来帮你有效布置任务
  17. 初学者学吉他推荐,别因选错吉他而前功尽弃
  18. iol植入手术过程_年龄相关性白内障phaco+Iol植入术的手术配合及体会
  19. 将军今天讲c语言了吗第六,计算机c语言 第六章:函数 教学设计(修改).doc
  20. SpringBoot-java.lang.IllegalArgumentException: Not a managed type异常问题解决方法

热门文章

  1. STM32F103C8T6引脚笔记
  2. 苹果xR为什么显示不了服务器,苹果手机iPhone XR无法连接到APP Store的解决方法
  3. poi-ooxml-lite:5.0.0 与 poi-ooxml-schemas:4.1.1 正式环境冲突
  4. vue知识点1-父子组件传值 插槽  wath  vuex
  5. Rinne Loves Dynamic Graph
  6. ArcGIS中的标注和注记 Label Annotation in ArcGIS
  7. 大数据处理关键技术主要有五种,具体指的是什么?
  8. 手机也可以快速翻译、PDF翻译超简单
  9. texi2dvi - 打印 Texinfo 文档
  10. CameraPath插件使用