正题


题目大意

nnn个数n−1n-1n−1个+++或−-−号的一个算式,加上一些括号使得运算结果最大。


解题思路

对于+++号左右的两个数字,无论如何加括号都不会变结果,所以我们可以合并这些数。然后就只剩下了减号,此时除了第一个就可以随意选择一段区间取反,那么对于嵌套了三层的括号,就可以拆成两层也就是最多只能嵌套两层括号。考虑dpdpdp,设fi,jf_{i,j}fi,j​表示到第iii个,嵌套了jjj层的括号的情况下最大的答案。

时间复杂度O(n)O(n)O(n)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e5+10;
ll T,n,a[N],f[N][3],ans;
inline ll read()
{ll s=0,f=1; char c=getchar();while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9') {s=s*10+c-'0';c=getchar();}return s*f;
}
int main()
{//  freopen("jerry.in","r",stdin);
//  freopen("jerry.out","w",stdout);scanf("%lld",&T);f[0][1]=f[0][2]=-1e18;while(T--){scanf("%lld",&n);for(int i=1;i<=n;i++)a[i]=read();ans=-1e18;for(ll i=1;i<=n;i++){if(a[i]<0){f[i][0]=-1e18;f[i][1]=max(f[i-1][1],max(f[i-1][0],f[i-1][2]))+a[i];f[i][2]=max(f[i-1][2],f[i-1][1])-a[i];}else{f[i][0]=max(f[i-1][0],max(f[i-1][1],f[i-1][2]))+a[i];f[i][1]=max(f[i-1][1]-a[i],f[i-1][2]-a[i]);f[i][2]=f[i-1][2]+a[i];}}printf("%lld\n",max(max(f[n][0],f[n][1]),f[n][2]));}
}

jzoj6804-NOIP2020.9.26模拟jerry【dp】相关推荐

  1. 【CodeForces - 545 ABCDE套题训练题解】贪心, 构造,模拟,dp,最短路树(Dijkstra+变形)

    A: 题干: Input The first line contains integer n (1 ≤ n ≤ 100) - the number of cars. Each of the next  ...

  2. 【 HRBUST - 1055】Single(模拟,dp,打表)(总结)

    题干: There are many handsome single boys in our team, for example, me. Some times, we like count sing ...

  3. Codeforces Round #552 (Div. 3) E stl模拟 F dp G gcd

    contest链接 https://codeforces.com/contest/1154 E 题解思路 直接哈希模拟删除T了,可以用setsetset和lowerlowerlower_boundbo ...

  4. 寒假算法学习 OI生涯 - 悄无声息(模拟+线性DP优化) OI生涯 - 德国心脏病 (模拟)

    OI生涯 - 悄无声息 题目描述 「李」走路是没有动静的,如果你在干「李」不让你干的事情,他会神不知鬼不觉的走到你的身后,然后把你奶一顿! 因为你知道「李」走路没有动静,所以为了提防,可以认为「李」有 ...

  5. 7.26模拟考试总结

    为了今年的NOIP而奋斗 题目网址: 清华大学云盘 Process(比赛过程) 首先花了10分钟看了一下四道题,然后我开始做第一道题,第一眼看到这个题目的时候其实没有什么思路,后来我渐渐联想到了约瑟夫 ...

  6. [模拟/区间DP]Csp M4 T1T2T4

    目录 A.[模拟]数鸭子 题意 样例 样例输入: 样例输出: 思路 总结 代码 B.[模拟]宇宙射线 题意 样例 样例输入: 样例输出: 思路 总结 代码 C.[区间DP]危机 题意 样例 样例输出: ...

  7. Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子

    模拟12306买票过程 共享资源,并发(线程安全) Web12306.java /*** 共享资源,并发(线程安全)* @author Administrator**/ public class We ...

  8. 8.12模拟:dp递推

    文章目录 前言 本次最大收获 考场 复盘 T1 lecture T2 n-thlon T3 assignment T4 recoverset 总结 前言 245分 100+70+40+35 不太满意q ...

  9. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

最新文章

  1. Tomcat 调优及 JVM 参数优化
  2. 为什么python注释不能中文_python中输入中文注释是无法编译
  3. 树莓派 ubuntu 18.04 安装 .NET Core
  4. 用c语言实现存储和读取图片文件,C++实现单张图片读取和保存
  5. InputStreamReader介绍代码实现
  6. CF1016F:Road Projects(树形dp)
  7. Quartz简单实例
  8. 拨号云服务器怎么自动配置网关_云服务器配置网站卡慢怎么办
  9. linuxoracle查看用户权限_实现Oracle授予用户权限的一个实例
  10. index.dat文件剖析
  11. 剑指offer 第1题
  12. matlab icol,Matlab 图像处理相关函数命令大全
  13. from scipy import special, optimize, from ._nnls import nnls ImportError: DLL load failed: 找不到指定的模块。
  14. 怀才当遇网—毕业季 | 你总说毕业遥遥无期,转眼就各奔东西
  15. LinkedList类源码阅读
  16. java的swing案例
  17. vue项目引入阿里巴巴矢量图标库图标
  18. Python 微信自动发送消息
  19. LeCo-206反转链表
  20. 安装minigui和mStudio

热门文章

  1. 烧录imx6需要的linux空间,IMX6Q学习笔记——开发板的Linux系统更新和烧录
  2. java 根据客户端重定向_JavaWeb【1.4HttpServletResponse类、重定向】
  3. mysql改密码脚本_mysql密码修改脚本
  4. python if 跳出_Python保留字简单释义
  5. as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。
  6. python opengl_Python环境搭建之OpenGL
  7. Leetcode周赛复盘——第 276 场力扣周赛
  8. [mybatis]Configuration XML_properties
  9. [剑指offer]面试题1:赋值运算符函数
  10. 2019年第十届蓝桥杯国赛B组试题D-求值-枚举