#dp#NOIP2020.9.26模拟jerry
题目
Jerry 写下了一个只由非负整数和加减号组成的算式。
它想给这个算式添加合法的括号,使得算式的结果最大。
分析
考场\(O(n^3)\)伪部分分成功爆零,
设\(dp[i][j]\)表示前\(i\)个数中缺了\(j\)个右括号需要配对的最大结果,
那就考虑是加一个括号(第\(i\)个数前是负号)或不变或配对一个括号,
但是感性理解一下缺了三个或以上的右括号实际上可以被两个以内所代替
(三重否定为否定)。由于正数是可以合并的,所以括号是可以被拆开成两部分的
那么这道题就可以\(O(n)\)解决了
代码
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=100011; typedef long long lll;
int n,a[N],b[N]; lll dp[N][3];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline lll max(lll a,lll b){return a>b?a:b;}
signed main(){
freopen("jerry.in","r",stdin);
freopen("jerry.out","w",stdout);
for (rr int T=iut();T;--T){
n=iut(),b[1]=0;
for (rr int i=1;i<=n;++i){
a[i]=iut();
if (i==n) continue;
rr char c=getchar();
while (c!='+'&&c!='-') c=getchar();
b[i+1]=(c=='-');
}
dp[0][0]=0,dp[0][1]=dp[0][2]=-1e18;
for (rr int i=1;i<=n;++i)
if (b[i]){
dp[i][0]=-1e18;//前面是负号强行加括号,所以不可能
dp[i][1]=max(max(dp[i-1][0],dp[i-1][1]),dp[i-1][2])-a[i];
dp[i][2]=max(dp[i-1][1],dp[i-1][2])+a[i];//变号
}else{
dp[i][0]=max(max(dp[i-1][0],dp[i-1][1]),dp[i-1][2])+a[i];
dp[i][1]=max(dp[i-1][1],dp[i-1][2])-a[i];//变号
dp[i][2]=dp[i-1][2]+a[i];//两次变号符号不变
}
printf("%lld\n",max(max(dp[n][0],dp[n][1]),dp[n][2]));
}
return 0;
}
#dp#NOIP2020.9.26模拟jerry的更多相关文章
- DP 01背包 七夕模拟赛
问题 D: 七夕模拟赛 时间限制: 1 Sec 内存限制: 128 MB提交: 60 解决: 23[提交][状态][讨论版] 题目描述 " 找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手 ...
- 6.26模拟赛(1)总结(T1:信息传递;T2:传染病控制;T3:排列;T4:最大数)
16:33:56 2020-06-26 当然可以先看一下成绩: 非常显然的成绩不能算有多好,当然其实这也可能是假期水课的报应 (额) 但是比我集训前想象的要好一点(集训时想象的是排名前30就可以,嗯 ...
- luogu P5470 [NOI2019]序列 dp 贪心 费用流 模拟费用流
LINK:序列 考虑前20分 容易想到爆搜. 考虑dp 容易设\(f_{i,j,k,l}\)表示前i个位置 选了j对 且此时A选择了k个 B选择了l个的最大值.期望得分28. code //#incl ...
- BZOJ 3812 主旋律 (状压DP+容斥) + NOIP模拟赛 巨神兵(obelisk)(状压DP)
这道题跟另一道题很像,先看看那道题吧 巨神兵(obelisk) 题面 欧贝利斯克的巨神兵很喜欢有向图,有一天他找到了一张nnn个点mmm条边的有向图.欧贝利斯克认为一个没有环的有向图是优美的,请问这张 ...
- JZOJ 6801. NOIP2020.9.19模拟patrick
题目大意 动态维护数列中大于等于某个数的极长连续段的个数. 思路 我们考虑每段的开头,记为 \(i\),高度为 \(a_i\) 那么此时水淹的高度必然满足 \(a_{i-1} < x \leq ...
- JZOJ 6800.NOIP2020.9.19模拟spongebob
题目大意 求形如 \[\sum_{i=1}^n |a_ix + b_i| \] 的最小值 思路 我们显然可以先把系数 \(a\) 提出来 于是就成了 \(\sum_{i=1}^n |a_i|·|x + ...
- [CQOI2016] 手机号码 (数位dp)
link $solution:$ $10^{10} \leq L \leq R < 10^{11}$这个数据范围很容易想到数位$dp$. 依照题意模拟即可. #include<iostre ...
- Codeforces 918D MADMAX 图上dp 组合游戏
题目链接 题意 给定一个 \(DAG\),每个边的权值为一个字母.两人初始各占据一个顶点(可以重合),轮流移动(沿着一条边从一个顶点移动到另一个顶点),要求每次边上的权值 \(\geq\) 上一次的权 ...
- HDU 5642 King's Order【数位dp】
题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=677&pid=1003 题意: 求长度为n的序列 ...
- 多重背包 /// 单调队列DP oj1943
题目大意: em.... 就是多重背包 挑战340页的东西 ...自己的笔记总结总是比较乱的 重点:原始的状态转移方程中 更新第 i 种物品时 重量%w[i] 的值不同 则它们之间是相互独立的: 1- ...
随机推荐
- logback 常用配置(详解)
转自:https://blog.csdn.net/qq_36850813/article/details/83092051 官方文档参考:https://logback.qos.ch/manual/a ...
- iOS 面向对象与类
至于未来会怎样,要走下去才知道反正路还很长,天总会亮. 1. 面向对象 1.1 什么是面向对象(OOP) 面向对象 Object Oriented Programming.在软件开发中,我们虽然用的是 ...
- 对于Celery原理的简单理解
参考博客: https://www.cnblogs.com/forward-wang/p/5970806.html https://blog.csdn.net/cuomer/article/detai ...
- 02、NATS单节点部署
接下来,我们一起看看如何部署一个单节点的 nats 服务器,这样后续学习 nats 的功能和特性的时候,会更加的清晰,那我们一起看看如何部署单节点的nats服务,后面在学习如何部署集群版的 nats. ...
- 【Azure 环境】如果Azure中的某一个资源被删除后是否可以查看到删除的记录呢?如Resource Group
问题描述 当一个资源从Azure中删除后,是否有地方可以查看到这些操作的记录呢?如操作人,操作时间等. 问题解答 可以的.通过 Azure订阅页面的活动日志,可以查看所有对订阅下资源的操作记录,包含D ...
- [manjaro linux] 安装完成之后的配置工作,以及常用软件的安装
emmm 很久没有更新了,绝对不是丢掉了博客帐号,有时间还是要好好装饰以下博客的... https://zhuanlan.zhihu.com/p/114296129 看到很多过程 sudo pacma ...
- HttpClientHandler VS SocketsHttpHandler
.NET Framework 和 .NET Core 2.0 及更低版本中由 HttpClient 使用的默认消息处理程序为HttpClientHandler. 从 .NET Core 2.1 开始, ...
- 关于wine乱码问题的解决方法
在我的百度网盘里面,以及U盘备份,里面的Fonts.zip文件, 使用unzip Fonts.zip----linux指令 把这个文件夹里面的所有文件复制到wine的映射目录里面 cp Fonts/* ...
- c基础-指针、函数与预处理器
指针.函数.预处理器 目录 指针.函数.预处理器 1.指针 解引用 指针运算 数组和指针 const char *, char const *, char * const,char const * c ...
- 聚焦“云XR如何赋能元宇宙”,3DCAT实时云渲染首届行业生态合作交流会成功举办
2021年12月17日下午,由深圳市瑞云科技有限公司主办,深圳市虚拟现实产业联合会协办的云XR如何赋能元宇宙--3DCAT实时云渲染首届行业生态合作交流会圆满落幕.此次活动围绕 "云XR如何 ...