dp思维
题意:有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思维的更多相关文章
- cf1153D 树形dp+思维
一千八的题也不会做了呜呜呜 size[u]表示结点u下的叶子结点, 思维:可以想到一个子树对其父亲会有一个消耗值 考虑一个点如果是max,那么其最大值可以是size[u]-p,p是消耗值最小的子树 一 ...
- E. The Contest ( 简单DP || 思维 + 贪心)
传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...
- 7月15日考试 题解(链表+状压DP+思维题)
前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...
- codeforces 1140D(区间dp/思维题)
D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- POJ 1390 Blocks(DP + 思维)题解
题意:有一排颜色的球,每次选择一个球消去,那么这个球所在的同颜色的整段都消去(和消消乐同理),若消去k个,那么得分k*k,问你消完所有球最大得分 思路:显然这里我们直接用二位数组设区间DP行不通,我们 ...
- “玲珑杯”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 官方题解: 代码如 ...
- HDU - 5117 Fluorescent(状压dp+思维)
原题链接 题意 有N个灯和M个开关,每个开关控制着一些灯,如果按下某个开关,就会让对应的灯切换状态:问在每个开关按下与否的一共2^m情况下,每种状态下亮灯的个数的立方的和. 思路1.首先注意到N< ...
- Codeforces 407B Long Path(好题 DP+思维)
题目链接:http://codeforces.com/problemset/problem/407/B 题目大意:一共n+1个房间,一个人从1走到n+1,每次经过房间都会留下一个标记,每个房间有两扇门 ...
- Codeforces Round #541 (Div. 2) G dp + 思维 + 单调栈 or 链表 (连锁反应)
https://codeforces.com/contest/1131/problem/G 题意 给你一排m个的骨牌(m<=1e7),每块之间相距1,每块高h[i],推倒代价c[i],假如\(a ...
- HDU 2476 String painter(区间DP+思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2476 题目大意:给你字符串A.B,每次操作可以将一段区间刷成任意字符,问最少需要几次操作可以使得字符串 ...
随机推荐
- 安全服务——CVE中CVSS相关指标介绍
目录 CVSS相关指标 一.CVSS是什么 二.指标内容 1.Base指标 2.Temporal指标 3.Environmental指标 三.Base, Temporal, Environmental ...
- java jpa 实体关联
关联关系: 1. One to One 2. One to Many 3. Many to One 4 Many to Many 映射: 延迟加载 @Basic(fetch = FetchType.L ...
- WireMock提供Restful接口数据
1.去官网下载并启动: 2.引入Pom依赖(主要是com.github.tomakehurst:wiremock): <dependency> <groupId>com.git ...
- ArcGis 创建含孔洞面要素AO C#
IGeometryCollection geometryCollection = new PolygonClass(); IPointCollection pointCollection_Exteri ...
- javascript中var同时声明多个变量时的原理是什么?
<script> function show(){ var a=b=c=d=5; } show(); alert(a);//弹a时报错(not defined),而b.c.d都能弹出5 & ...
- css图片文字
1.浏览器是把 html 和 css 一起下载并执行的,计算机里把两件事情同时做 异步加载.计算机中的同步异步和我们生活中的正好是相反的. 补充: 同步,是所有的操作都做完,才返回给用户结果.即写完 ...
- springMVC相应之返回值
string返回值: <%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/11/12 Time: 16:24 To cha ...
- css3 新特性(2D translate 移动,rotate 旋转 , scale 缩放)
1.transform(转换)可以实现元素的位移,旋转,缩放等效果(可以简单理解为变形) 移动:translate 旋转:rotate 缩放:scale 2. ...
- CodeForces - 337D 树形dp
题意:一颗树上有且仅有一只恶魔,恶魔会污染距离它小于等于d的点,现在已经知道被污染的m个点,问恶魔在的可能结点的数量. 容易想到,要是一个点到(距离最远的两个点)的距离都小于等于d,那么这个点就有可能 ...
- 启动Process实现多任务
from multiprocessing import Process import time '''multiprocessing模块1.跨平台的多进程模块2.提供了一个Process类的实例代表一 ...