题目传输门

题意:有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. 点读系列《Jenkins用户文档》

    Jenkins用户手册官网地址:点击打开 开源 CI&CD 软件 自动化各种任务, build test deploy 支持各种运行方式 Jenkins入门 入门指南 需要java和docke ...

  2. 树的重心(DFS)

    ;vector< ; i < v[node].size() ; i++){ , ; i <= n- ; i++){ cin >> a >> b; v[a].p ...

  3. Fedora LVM磁盘大小调整

    umount /dev/fedora/swap e2fsck -f /dev/fedora/swap

  4. Mybatis缓存1----系统缓存及简单配置介绍

      mybatis缓存 系统缓存:常用的一级缓存和二级缓存 一级缓存 一级缓存是SqlSession级别的缓存,在操作数据库时需要构建SqlSession对象,在对象中有一个数据结构用于存储缓存数据. ...

  5. 廖雪峰的git学习笔记

    安装完后,每个机器都要自报家门 Config--配置      global--全局参数 配置全局用户名 $git config --global user.name “Your Name” 配置邮箱 ...

  6. jumpserver3.0页面配置

    一.jumpserver的启动 1 2 Jumpserver的启动和重启 [root@test-vm001 install]# /opt/jumpserver/service.sh start/res ...

  7. 在python中创建列表的最佳和/或最快方法

    在python中,据我所知,至少有3到4种方法来创建和初始化给定大小的列表: 简单循环append: my_list = [] for i in range(50): my_list.append(0 ...

  8. String转list

    String l = "63, 47, 51, 35, 36, 52, 37, 53, 38, 54, 39, 55, 40, 56, 41, 57, 42";List<In ...

  9. 安装python及编辑工具PyCharm

    win10下安装python环境,安装编辑工具PyCharm 1.安装 pythonpython安装包下载地址https://www.python.org/ftp/python/3.8.0/pytho ...

  10. 高级运维(三):部署Lnmp环境、构建Lnmp平台、地址重写

    一.部署LNMP环境 目标: 安装部署Nginx.MariaDB.PHP环境 1> 安装部署Nginx.MariaDB.PHP.PHP-FPM: 2> 启动Nginx.MariaDB.FP ...