ACM-ICPC 2018 焦作赛区网络预赛 B Mathematical Curse(DP)
https://nanti.jisuanke.com/t/31711
题意
m个符号必须按顺序全用,n个房间需顺序选择,有个初始值,问最后得到的值最大是多少。
分析
如果要求出最大解,维护最大值是不能得到的,因为有负数的参与,所以我们维护最大值和最小值。不管那么多,反正答案肯定是由极值产生的。
定义dp1[i][j]为用了i个符号,走了j间房后的最大值。因而dp2[][]就是对应的最小值。然后按要求转移。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + ;
const int inf = 0x3f3f3f3f;
ll dp1[][],dp2[][];
int a[];
char f[];
int main(){
int n,m,k;
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
scanf("%s",f+);
//puts(f+1);
memset(dp1,-inf,sizeof(dp1));
memset(dp2,inf,sizeof(dp2));
for(int j=;j<=n;j++) dp1[][j]=dp2[][j]=k;
for(int i=;i<=m;i++){
for(int j=i;j<=n;j++){
dp1[i][j]=dp1[i][j-];
dp2[i][j]=dp2[i][j-];
if(f[i]=='+'){
dp1[i][j]=max(dp1[i][j],dp1[i-][j-]+a[j]);
dp2[i][j]=min(dp2[i][j],dp2[i-][j-]+a[j]);
}else if(f[i]=='-'){
dp1[i][j]=max(dp1[i][j],dp1[i-][j-]-a[j]);
dp2[i][j]=min(dp2[i][j],dp2[i-][j-]-a[j]);
}else if(f[i]=='*'){
dp1[i][j]=max(dp1[i][j],dp1[i-][j-]*a[j]);
dp1[i][j]=max(dp1[i][j],dp2[i-][j-]*a[j]);
dp2[i][j]=min(dp2[i][j],dp2[i-][j-]*a[j]);
dp2[i][j]=min(dp2[i][j],dp1[i-][j-]*a[j]);
}else{
dp1[i][j]=max(dp1[i][j],dp1[i-][j-]/a[j]);
dp1[i][j]=max(dp1[i][j],dp2[i-][j-]/a[j]);
dp2[i][j]=min(dp2[i][j],dp2[i-][j-]/a[j]);
dp2[i][j]=min(dp2[i][j],dp1[i-][j-]/a[j]);
}
}
}
printf("%lld\n",dp1[m][n]);
}
return ;
}
ACM-ICPC 2018 焦作赛区网络预赛 B Mathematical Curse(DP)的更多相关文章
- ACM-ICPC 2018 焦作赛区网络预赛- G:Give Candies(费马小定理,快速幂)
There are N children in kindergarten. Miss Li bought them NNN candies. To make the process more inte ...
- ACM-ICPC 2018 焦作赛区网络预赛- L:Poor God Water(BM模板/矩阵快速幂)
God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...
- ACM-ICPC 2018 焦作赛区网络预赛
这场打得还是比较爽的,但是队友差一点就再过一题,还是难受啊. 每天都有新的难过 A. Magic Mirror Jessie has a magic mirror. Every morning she ...
- ACM-ICPC 2018 焦作赛区网络预赛J题 Participate in E-sports
Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...
- ACM-ICPC 2018 焦作赛区网络预赛 K题 Transport Ship
There are NN different kinds of transport ships on the port. The i^{th}ith kind of ship can carry th ...
- ACM-ICPC 2018 焦作赛区网络预赛 L 题 Poor God Water
God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...
- ACM-ICPC 2018 焦作赛区网络预赛 I题 Save the Room
Bob is a sorcerer. He lives in a cuboid room which has a length of AA, a width of BB and a height of ...
- ACM-ICPC 2018 焦作赛区网络预赛 H题 String and Times(SAM)
Now you have a string consists of uppercase letters, two integers AA and BB. We call a substring won ...
- ACM-ICPC 2018 焦作赛区网络预赛 G题 Give Candies
There are NN children in kindergarten. Miss Li bought them NN candies. To make the process more inte ...
随机推荐
- SpringMVC把后台文件打印到前台
实现效果如下: 代码为: @RequestMapping(value = "/tools/printContract") public void cell(HttpServletR ...
- php unset对json_encode的影响
先运行一段php代码: $a = Array(0=>'hello world', 1=>'girl', 2=>'boy'); var_dump(json_encode($a)); u ...
- 【NOIP2018 Day1】题解
T3 rp++; 今天题比较简单 而且考了很多嫌疑原题? 大家基本250+ 本蒟蒻...T3十分看脸 再次祝rp++; T1 积木大赛本赛嘛 如果d[i] < d[i - 1] ans += d ...
- HAOI2017 简要题解
「HAOI2017」新型城市化 题意 有一个 \(n\) 个点的无向图,其中只有 \(m\) 对点之间没有连边,保证这张图可以被分为至多两个团. 对于 \(m\) 对未连边的点对,判断有哪些点对满足将 ...
- android startActivityForResult 使用实例
ActivityForResult.java public class ActivityForResult extends Activity { Button bn; EditText city; @ ...
- Java复习总结——注解
注解 概念及作用 概念 注解即元数据,就是源代码的元数据 注解在代码中添加信息提供了一种形式化的方法,可以在后续中更方便的 使用这些数据 Annotation是一种应用于类.方法.参数.变量.构造器及 ...
- hdu 1527 (威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石 ...
- java 判断元素是否在数组内
一,先转为List,再使用contains()方法 String[] strArr = new String[] { "a", "b", "c&quo ...
- Electron一学习资源收集和练习demo
1.近日为了做项目查资料学习electron,简直头都要炸了,就官方的electron-quick-start的例子进行了基本的练习之后,不断的查资料终于发现一些有用的demo来看源代码学习,一遍看代 ...
- 解题:CF622F The Sum of the k-th Powers
题面 TJOI2018出CF原题弱化版是不是有点太过分了?对,就是 TJOI2018 教科书般的亵渎 然而我这个问题只会那个题的范围的m^3做法 回忆一下1到n求和是二次的,平方求和公式是三次的,立方 ...