题目传输门

题意:有n个房间,m个诅咒,每个房间有一个数值,刚开始有一个初始值,每次进入一个房间可以选择消除诅咒或者不消除,消除诅咒只能顺序消除,消除诅咒就是拿初始值和房间的数值做运算,求最后最大的数是多少。

 

思路:因为运算是要按顺序的,那么规定dp1[i][j]为前i个数中运算了前j个运算符的最大值,因为数字有可能为负数,那么乘法和除法运算就要特殊处理了,因为乘上一个负数或者除一个负数的话,值越大结果就越小,所以还需要dp2[i][j]来表示前i个数运算了前j个运算符的最小值。

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#define ll long long
const int max_=;
using namespace std;
ll dpmax[][];//第-维是用到第几个数,第二维是用到第几个符号;
ll dpmin[][];
ll a[max_];
ll maxm,minm;
char str[];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m,c;
cin>>n>>m>>c;
memset(dpmax,,sizeof(dpmax));
memset(dpmin,,sizeof(dpmin));
for(int i=;i<=n;i++)
{
dpmax[i][]=c;
dpmin[i][]=c;
}
for(int i=;i<=n;i++)
{
cin>>a[i];
}
for(int i=;i<=m;i++)
{
cin>>str[i];
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
if(i>=j)
{
if(str[j]=='+')
maxm=max(dpmax[i-][j-]+a[i],dpmin[i-][j-]+a[i]),
minm=min(dpmax[i-][j-]+a[i],dpmin[i-][j-]+a[i]);
if(str[j]=='-')
maxm=max(dpmax[i-][j-]-a[i],dpmin[i-][j-]-a[i]),
minm=min(dpmax[i-][j-]-a[i],dpmin[i-][j-]-a[i]);
if(str[j]=='*')
maxm=max(dpmax[i-][j-]*a[i],dpmin[i-][j-]*a[i]),
minm=min(dpmax[i-][j-]*a[i],dpmin[i-][j-]*a[i]);
if(str[j]=='/')
maxm=max(dpmax[i-][j-]/a[i],dpmin[i-][j-]/a[i]),
minm=min(dpmax[i-][j-]/a[i],dpmin[i-][j-]/a[i]);
dpmax[i][j]=max(maxm,dpmax[i-][j]);
dpmin[i][j]=min(minm,dpmin[i-][j]);
}
if(i==j)
dpmax[i][j]=maxm,
dpmin[i][j]=minm;
}
cout<<dpmax[n][m]<<endl;
}
}

参考博客:https://blog.csdn.net/baymax520/article/details/82719543

另外:

ios::sync_with_stdio(false);

输入加速器。

参考博客:https://blog.csdn.net/yujuan_mao/article/details/8119529

dp思维的更多相关文章

  1. cf1153D 树形dp+思维

    一千八的题也不会做了呜呜呜 size[u]表示结点u下的叶子结点, 思维:可以想到一个子树对其父亲会有一个消耗值 考虑一个点如果是max,那么其最大值可以是size[u]-p,p是消耗值最小的子树 一 ...

  2. E. The Contest ( 简单DP || 思维 + 贪心)

    传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...

  3. 7月15日考试 题解(链表+状压DP+思维题)

    前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...

  4. codeforces 1140D(区间dp/思维题)

    D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  5. POJ 1390 Blocks(DP + 思维)题解

    题意:有一排颜色的球,每次选择一个球消去,那么这个球所在的同颜色的整段都消去(和消消乐同理),若消去k个,那么得分k*k,问你消完所有球最大得分 思路:显然这里我们直接用二位数组设区间DP行不通,我们 ...

  6. “玲珑杯”ACM比赛 Round #18---图论你先敲完模板(DP+思维)

    题目链接 DESCRIPTION INPUT OUTPUT SAMPLE INPUT 2 3 2 3 5 7 3 10 3 5 7 SAMPLE OUTPUT 12 26 HINT 官方题解: 代码如 ...

  7. HDU - 5117 Fluorescent(状压dp+思维)

    原题链接 题意 有N个灯和M个开关,每个开关控制着一些灯,如果按下某个开关,就会让对应的灯切换状态:问在每个开关按下与否的一共2^m情况下,每种状态下亮灯的个数的立方的和. 思路1.首先注意到N< ...

  8. Codeforces 407B Long Path(好题 DP+思维)

    题目链接:http://codeforces.com/problemset/problem/407/B 题目大意:一共n+1个房间,一个人从1走到n+1,每次经过房间都会留下一个标记,每个房间有两扇门 ...

  9. Codeforces Round #541 (Div. 2) G dp + 思维 + 单调栈 or 链表 (连锁反应)

    https://codeforces.com/contest/1131/problem/G 题意 给你一排m个的骨牌(m<=1e7),每块之间相距1,每块高h[i],推倒代价c[i],假如\(a ...

  10. HDU 2476 String painter(区间DP+思维)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2476 题目大意:给你字符串A.B,每次操作可以将一段区间刷成任意字符,问最少需要几次操作可以使得字符串 ...

随机推荐

  1. elasticsearch-6.0.1安装

    elasticsearch-6.0.1安装 0. 介绍:     ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎:是目前全文搜索引擎的首选. ...

  2. pytest-调整测试用例的执行顺序

    场景:未考虑按自然顺序执行时,或想变更执行顺序,比如增加 数据的用例要先执行,再执行删除的用例.测试用例默认是按名 称顺序执行的. • 解决: • 安装:pip install pytest-orde ...

  3. springMVC 框架的xml配置文件的说明

    springMVC框架xml文件配置的说明,直接上代码: 我们介绍四个xml文件配置以及xml内容的理解:application.xml.spring-mvc.xml.pom.xml 和 web.xm ...

  4. RK3288 控制usb摄像头补光GPIO

    正常可以通过添加dts配置,再从设备树中读取gpio号,在这里为了简单,直接使用GPIO号,先通过终端测试gpio, 系统自带GPIO控制驱动: 内核已经自带了通用GPIO驱动,可以直接在用户空间操作 ...

  5. dubbo-源码阅读之容器启动

    dubbo Main 例子 public class Start { public static void main(String[] args) throws Exception { com.ali ...

  6. pip配置阿里云源

    Windows:打开计算机,在地址栏输入%appdata%,回车,进入用户文件夹,新建文件夹,命名为pip 在pip下新建pip.ini,输入以下内容 [global] timeout=6000ind ...

  7. 125K低频唤醒芯片SI393可替代AS3933,GS3933

    2020年即将推出性能最出色的15–150kHz频率范围.3通道低频唤醒接收器,且具备自动天线调谐功能. SI393是15–150kHz频率范围.3通道低频唤醒接收器,且具备自动天线调谐功能,在软硬件 ...

  8. PHP多参数方法的重构

    假设我们要完成一个保存文章的功能,如果采用函数编程的方式,大概会是下面这个样子: <?php function saveArticle($title, $content, $categoryId ...

  9. php常用函数总结2

    文件系统函数 函数名 描述 实例 输入 输出 操作 fopen() 打开文件或者 URL $handle = fopen("ftp://user:password@example.com/s ...

  10. 【LeetCode 17】电话号码的字母组合

    题目链接 [题解] 用回溯法搞一下. 一搞就有~ 注意输入空串的时候别返回那个空串.. [代码] class Solution { public: string dic[10]; vector< ...