题目

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的更多相关文章

  1. DP 01背包 七夕模拟赛

    问题 D: 七夕模拟赛 时间限制: 1 Sec  内存限制: 128 MB提交: 60  解决: 23[提交][状态][讨论版] 题目描述 " 找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手 ...

  2. 6.26模拟赛(1)总结(T1:信息传递;T2:传染病控制;T3:排列;T4:最大数)

    16:33:56 2020-06-26 当然可以先看一下成绩: 非常显然的成绩不能算有多好,当然其实这也可能是假期水课的报应  (额) 但是比我集训前想象的要好一点(集训时想象的是排名前30就可以,嗯 ...

  3. luogu P5470 [NOI2019]序列 dp 贪心 费用流 模拟费用流

    LINK:序列 考虑前20分 容易想到爆搜. 考虑dp 容易设\(f_{i,j,k,l}\)表示前i个位置 选了j对 且此时A选择了k个 B选择了l个的最大值.期望得分28. code //#incl ...

  4. BZOJ 3812 主旋律 (状压DP+容斥) + NOIP模拟赛 巨神兵(obelisk)(状压DP)

    这道题跟另一道题很像,先看看那道题吧 巨神兵(obelisk) 题面 欧贝利斯克的巨神兵很喜欢有向图,有一天他找到了一张nnn个点mmm条边的有向图.欧贝利斯克认为一个没有环的有向图是优美的,请问这张 ...

  5. JZOJ 6801. NOIP2020.9.19模拟patrick

    题目大意 动态维护数列中大于等于某个数的极长连续段的个数. 思路 我们考虑每段的开头,记为 \(i\),高度为 \(a_i\) 那么此时水淹的高度必然满足 \(a_{i-1} < x \leq ...

  6. JZOJ 6800.NOIP2020.9.19模拟spongebob

    题目大意 求形如 \[\sum_{i=1}^n |a_ix + b_i| \] 的最小值 思路 我们显然可以先把系数 \(a\) 提出来 于是就成了 \(\sum_{i=1}^n |a_i|·|x + ...

  7. [CQOI2016] 手机号码 (数位dp)

    link $solution:$ $10^{10} \leq L \leq R < 10^{11}$这个数据范围很容易想到数位$dp$. 依照题意模拟即可. #include<iostre ...

  8. Codeforces 918D MADMAX 图上dp 组合游戏

    题目链接 题意 给定一个 \(DAG\),每个边的权值为一个字母.两人初始各占据一个顶点(可以重合),轮流移动(沿着一条边从一个顶点移动到另一个顶点),要求每次边上的权值 \(\geq\) 上一次的权 ...

  9. HDU 5642 King's Order【数位dp】

    题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=677&pid=1003 题意: 求长度为n的序列 ...

  10. 多重背包 /// 单调队列DP oj1943

    题目大意: em.... 就是多重背包 挑战340页的东西 ...自己的笔记总结总是比较乱的 重点:原始的状态转移方程中 更新第 i 种物品时 重量%w[i] 的值不同 则它们之间是相互独立的: 1- ...

随机推荐

  1. .Net 6 WebAPI 使用JWT进行 授权认证配置

    .Net 6 WebAPI 使用JWT进行 授权认证 1.安装组件(Nuget) Microsoft.AspNetCore.Authentication.JwtBearer 2.Program.cs ...

  2. mp4v2开发笔记(一): mp4v2库介绍,mp4v2在ubuntu上交叉编译移植到海思Hi35xx平台

    前言   在海思上需要将h264码流封装成mp4可使用mp4v2库.   其他相关   <Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译>   ...

  3. 数据抽取平台pydatax介绍--实现和项目使用

    数据抽取平台pydatax实现过程中,有2个关键点: 1.是否能在python3中调用执行datax任务,自己测试了一下可以,代码如下:    这个str1就是配置的shell文件 try: resu ...

  4. python部署项目为什么要用Nginx和uWSGI

    一.测试运行python项目 1.1 Flask项目 说明1:当我们直接用编译器运行Flask项目的时候,会有一个提示:意思就是:这是开发环境的服务器,不能用于生产环境的部署,请使用WSGI的服务器替 ...

  5. 从真实案例出发,全方位解读 NebulaGraph 中的执行计划

    本文整理自 NebulaGraph 核心开发 Yee 在直播<聊聊执行计划这件事>中的主题分享.分享视频参见 B站:https://www.bilibili.com/video/BV1Cu ...

  6. [manjaro linux] 安装完成之后的配置工作,以及常用软件的安装

    emmm 很久没有更新了,绝对不是丢掉了博客帐号,有时间还是要好好装饰以下博客的... https://zhuanlan.zhihu.com/p/114296129 看到很多过程 sudo pacma ...

  7. 微信小程序开发:接入阿里云人像动漫化api接口

    前面我已经把腾讯云的人像转动漫化接口接到了我的小程序里,但是和阿里云的对比后,发现阿里云的效果会更好一些,且支持更多特效,如下: 我比较喜欢这个3D特效风格,动画3D也可以,大家拭目以待. 话说上次接 ...

  8. 十五: InnoDB的存储结构

    InnoDB的存储结构 1.数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引|信息以及数据记录都是保存在文件上的,确切说是存储在页结构中.另一方面,索引是在存储引擎中实现的,MySQ ...

  9. PetriCrode ---Code Genreation for Colored Petri Nets Annotated with Pragmatics

    1. PetriCode lets users generate code from CPN  models annotated with pragmatics ,PetriCode allows t ...

  10. Docker安装好后服务启动不了

    安装 安装方式参考地址:https://www.docker.org.cn/book/install/install-docker-on-rhel-29.html 问题 安装好后启动不了服务器.查看状 ...