【codechef】括号匹配,求子串最大值(灵活题)

最大子串和问题(Maximum Subarray) 又一个经典问题,对于一个包含负值的数字串array[1...n],要找到他的一个子串array[i...j](0 这里我们需要注意子串和子序列之间的区别。子串是指数组中连续的若干个元素,而子序列只要求各元素的顺序与其在数组中一致,而没有连续的要求。对于一个元素数为n的数组,其含 阅读详情

 Input
3
4
()()
-1 -2 3 4
4
(()]
-1 -2 3 4
4
[{]{
1 2 3 4

Sample Output
7
1
0

Explanation

For first test case take last 2 elements: 3 + 4 = 7. 
For second test case take the middle 2 elements: -2 + 3 = 1

http://www.codechef.com/problems/SUBARRAY/

#include<iostream>
#include<algorithm>
#include<string>
#include<map>//int dx[4]={0,0,-1,1};int dy[4]={-1,1,0,0};
#include<set>//int gcd(int a,int b){return b?gcd(b,a%b):a;}
#include<vector>
#include<cmath>
#include<stack>
#include<string.h>
#include<stdlib.h>
#include<cstdio>
#define mod 1e9+7
#define ll long long
using namespace std;
map<char,int> r;
ll x[100010];
ll sum[100010];
char y[100010];
int n;
int main(){
	r[']']='[';
	r['}']='{';
	r['>']='<';
	r[')']='(';
	int t;
	scanf("%d",&t);
	while(t--){
	//	memset(sum,0,sizeof(sum)); 会超时 
		scanf("%d", &n);
		getchar();
		for(int i=1;i<=n;++i)
        	scanf("%c",&y[i]);
        for(int i=1;i<=n;++i){
            scanf("%lld",&x[i]);
            sum[i]=0;
            x[i]+=x[i-1];
        }
        stack<int> st;
        ll s=0;
        for(int i=1;i<=n;++i){
        	int u=0;
        	if(st.size()>0){
        		if(r[y[i]]==y[st.top()])
        			u=1;
        	}
        	if(u==1){
        		sum[i]=max(0ll,sum[st.top()-1]+x[i]-x[st.top()-1]);//((())()) 
        		s=max(s,sum[i]);
        		st.pop();
        	}
        	else
        		st.push(i);
        }
        printf("%lld\n", s);
	}
    return 0;
}


QMT Python API 实战指南:从安装到策略开发的完整流程 本文提供了一份详尽的QMT Python API实战指南,涵盖从环境配置到策略开发的完整流程。文章深入解析了xtdata行情模块与xttrader交易模块的核心架构与协作方式,并通过一个双均线策略实例,手把手教你如何获取数据、计算信号并执行交易,是量化交易开发者快速上手QMT Python接口文档的实用教程。 阅读详情

相关推荐

GQA数据集介绍

GQA,这是一个用于真实世界视觉推理和组合问答的新数据集。2200万个不同的推理问题,所有这些问题都带有表示其语义的功能程序。答案分布受到严格控制。11.3万张图像、2200万个问题,推理能力有对象和属性识别、传递关系跟踪、空间推理、逻辑推理和比较。

qq_56551150的博客 2954

求子串和的最大值

题目描述:有31,-41,59,26,-53,58,97,-93,-23,84十个数。 SUM(N,M)表示从第N个数到到第M个数的和。例如:SUM(2,3)=-41+59=18。 问:最大的和是多少?对应的N和M是多少? 要求高效,考虑数组所有可能出现的情况。 下午想了

LiuStan的专栏 1687

Anaconda详细安装及使用教程(带图文)

Anacond的介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda的下载文件比较大(约531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和Python)。 Conda是一个开源的包、环境管理器,可以用于...

代码帮 186万+

算法之美——求子串最大和

看《编程珠玑》看的郁闷毁了~ 木有激情啊~ 这里描述第8章的一道题:求子串最大和: 一个具有n个浮点数的向量x,要求输出相邻子向量的最大和,如图: 程序返回值应为x[2..6]的总和,即187。   在这里直接给出最适合简单的解法: 从数组的最左边x[0]开始扫描,一直到最右端x[n-1]。记录所有遇到的最大总和子向量maxendinghere。数组的最大总和maxsofar的初始

小熊不去实验室 2066

MATLAB机械臂建模实战:标准D-H法与改进D-H法到底选哪个?(附代码对比)

本文深入解析MATLAB中机械臂建模的标准D-H法与改进D-H法的本质区别,提供详细的代码对比和可视化结果。通过实际案例,帮助读者根据应用场景选择合适方法,并避免常见建模陷阱。特别关注Link函数和SerialLink工具的使用技巧,提升机械臂建模效率。

grape的博客 1121

SQL手工注入及sqlmap注入(文章管理系统实例练习)

sql手工注入及sqlmap注入练习

weixin_53303754的博客 523

算法—括号匹配深度

题目 题目描述 一个合法的括号匹配序列有以下定义: 1、空串""是一个合法的括号匹配序列 2、如果"X"和"Y"都是合法的括号匹配序列,“XY"也是一个合法的括号匹配序列 3、如果"X"是一个合法的括号匹配序列,那么”(X)"也是一个合法的括号匹配序列 4、每个合法的括号序列都可以由以上规则生成。 例如: “”,"()","()()","((()))“都是合法的括号序列 对于一个合法的括号序列我们又有以下定义它的深度: 1、空串”“的深度是0 2、如果字符串"X"的深度是x,字符串"Y"的深度是y,那么字符

shengpeizhu的博客 1350

PaddleOCR 3.x 最新版使用教程(2025)——从安装到实战身份证识别,一步到位!

本文针对PaddleOCR 3.x大版本更新带来的参数变化和兼容性问题,提供从环境配置到实际应用的全流程解决方案。

qq_58607032的博客 9787

POJ-2955 Brackets(括号匹配问题)

题目链接:http://poj.org/problem?id=2955 这题要求求出一段括号序列的最大括号匹配数量 规则如下: the empty sequence is a regular brackets sequence, ifsis a regular brackets sequence, then (s) and [s] are regular brackets...

dong52130的博客 177

MaxEnt运行报错的各种问题及解决方法

由于我使用的环境数据并不是大部分人常用的worldclim上下载的气候数据,而是使用不同的四类环境数据,分别包括:降雨数据、气温数据、氮沉降数据和大气CO2浓度数据,数据需要分别从不同的网站下载,因此并不能得到非常一致的数据文件,导致MaxEnt运行时出现了各种各样的错误。文件终于能够读取了,然而计算到一半又弹出第三种问题,根据弹出的报错提示,找到错误所在那一行,用Notepad++打开,可以发现,这一行确实存在nan值,导致文件读取无法正常进行。出现上图所述的问题时,检查环境变量是否具有相同的行列号。

guye322的博客 1万+

vue2/3 - [超详细] 实现企业微信扫码登录完整流程及代码,vue项目接入企业微信扫码登录功能教程,支持新跳页显示二维码或div容器里内嵌登录二维码(详细代码注释,一键复制开箱即用)

vue企业微信扫码登录,vue网页网站企业微信扫码登录教程,vue如何实现企业微信扫码登录功能,vue详细企业微信扫码登录功能实现,vue2实现企业微信扫码登录,前端vue企业微信扫码登录教程,vue pc电脑端企业微信扫码登录详细教程,vue项目中怎么做企业微信扫码注册登录,vue实现网站接入企业微信扫码登录,vue2做企业微信扫码登录的优质文章教程,vue网站对接企业微信扫码登录,vue企业微信扫码登录如何新开一页全屏显示登录二维码,vue企业微信登录二维码 内嵌在div容器里/跳页显示登录二维码,vu

✅ 精选推荐文章 5702

正则表达式匹配大括号里面的内容

{[^}]+} var str = "aa ds sdf {asdf asdfag }"; var str1 = str.match(/\{[^\}]+\}/)[0]; /{[\S\s]+}/或者/{(.|\r\n)+}/ *注:\S\s可是微软文档中对\n匹配的标准用法哦 var str = "aa ds sdf {asdf asdfag }"; var str...

weixin_30627381的博客 3958

001、NPU是什么?为什么嵌入式设备需要它?

本文通过作者调试工业相机板卡的经历,引出嵌入式设备为何需要NPU(神经网络处理器)的探讨。文章对比了CPU和NPU的设计哲学差异,指出NPU通过专用乘加器阵列和优化的数据流,能高效处理神经网络运算。作者分析了嵌入式设备使用NPU的三大优势:算力提升、功耗降低和实时性保障,并介绍了三类常见NPU形态。通过一个YOLOv5模型调试案例,揭示了NPU使用中的常见陷阱,最后给出五条实用建议,强调理解NPU原理和局限的重要性。文章生动展现了NPU在嵌入式AI应用中的关键作用。

m0_50546716的博客 126

求子串和的最大值(最慢与最快)

#include"stdio.h" int MaxSubseqSum(int a[],int n) { int ThisSum,MaxSum=0; int i,j,k; for(i=0;i<n;i++) { for(j=i;j<n;j++) { ThisSum=0; for(k=i;k<=j;k++) { ThisSum+=a[k]; printf("%d ",ThisSum); } printf("--------\n.

G00dChina的博客 313

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

求子数组的最大值

<br />/*关于子数组,就是对于一个数组,例如int A[]=2,-3,4,6,-2,4,-6,0,1 选择任意个数字,就是他的子数组,例如4,6就是他的一个子数组,而且是和最大的一项 2011.1.25 漯河 */ #include<iostream> using namespace std; template<typename T> T SelectMaxChildArray(T* Array,int Length,int &Left,int &Right) { T Sum=

Seanyxie Blog 1751

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

JAVA :在给定一个数组中,可以取得多个连续的子串。在众多子串中,求各元素和为最大值的连续子串!

在一个字符串中取得连续的子序列,并保证该序列的和为所有子序列中和为最大值。 思想:通过键盘录制获取要进行检测的数字串,其中包括正数,负数。定义一个全局变量top赋值为零,另外定义两个全局变量记录子串的位置(起始点与终点)利用循环将数组的各元素累加到top中,直到top import java.util.Scanner; //和最大的子串 public class ZichuanQiuhe {

嘻嘻的博客 3432

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

2018校招真题【牛客网】练习(七)

1、最后一位 题目描述 牛牛选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过程中,牛牛会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum. 例如X = 509, 在黑板上出现过的数字依次是509, 50, 5, 他们的和就是564. 牛牛现在给出一个sum,牛牛想让你求出一个正整数X经过上述过程的结果是sum. 思路: abc...

xiaowei_innocence的博客 890

统计字符串中出现最多次数的数字,并且求出数字与次数的乘积。

在牛客网Android的板块上看到一道题目,题目描述:给定一个字符串,假设为str = “a12b14aa18bb12cc14xx78eeeeeeeee12”,求出这个字符串中的每个数字出现的次数,求出出现最多次次数的数字与次数的乘积。 结果是 12 出现了 3次   所以结果是 36,题目大概就是这个样子。分析: 在JAVA中提供了关于很多字符串的操作方法,在这道题目中大概我用了,正则表达式,字...

清风半夜鸣蛙 1098

求子串

问题:STL学得真不过关啊 ,用到时就像不起来, while(cin.get(c))在结束时,先换行,即按下回车键,在按ctl+z键,代码是看了别人之后,自己重写的。 STL还是要好好学,真的很有用,可以吧复杂的问题变得简单。 代码: #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; ...

weixin_34268843的博客 117

正则表达式匹配最外层大括号里面的内容;匹配最内层大括号里面的内容

不管什么都要记录一下,也是服了我自己 对正则表达式不了解,遇到一个问题需要匹配最外层大括号的内容,绞尽脑汁,无果 后来解决了: female{{initiator} updated {person}’s role to {role}} 最外层正则表达式: (?<=\{).*(?=\}) 共找到 1 处匹配: {initiator} updat...

weixin_30764137的博客 4729

java查找字符串中包含子字符串的个数,灵活运用String方法,3种方法的代码实现!

第一种方法: 灵活运用split方法!直接把子字符串作为split的参数传进去,看看原字符串被分割成了几部分,得到的String数组的length。 然后length - 1就是 需要查询的子字符串的个数。 public class TestSearch2 { public static void main(String[] args) { // 随机写了一些字母,并且把java字符串穿插进去 String s = "jafdasfjavarerrajavafregjavatte

weixin_46362547的博客 7573

括号匹配深度 与 栈的使用

牛客网这一题的题干如下: 输入描述: 输入包括一个合法的括号序列s,s长度length(2 ≤ length ≤ 50),序列中只包含’(‘和’)’。 输出描述: 输出一个正整数,即这个序列的深度。 然后我们再来看下对于"合法的括号序列"的定义 1、空串"“是一个合法的括号匹配序列 2、如果"X"和"Y"都是合法的括号匹配序列,“XY"也是一个合法的括号匹配序列 3、如果"X"是一个合法的括号匹配序列,那么”(X)“也是一个合法的括号匹配序列 4、每个合法的括号序列都可以由以上规则生成。 例如:

yytoo2的博客 403

输出字符串中匹配最多的括号数

【java】输出字符串中匹配最多的括号数欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导...

weixin_43376523的博客 670

[算法]-括号匹配深度

思路:由于输入的是合法的括号序列,运用栈的思想,每次进入一个左括号,一个暂存量一定是+1的,每当进入一个右括号,就得和之前的左括号进行抵消,于是这个暂存量就-1了,最大深度通过max函数求得暂存量和当前深度的最大值即可。 通俗的来说就是遍历字符串 记录最大’连续’左括号数量,遇到右括号要相应消去一个左括号数量 ,由于题目输入是合法的 所以最大’连续’左括号数量就是这个序列的深度。 #includ...

隔壁老王三金的博客 1180

合法括号匹配问题(深度,方案个数)已AC

合法括号满足的条件为左边第一个括号必须为(  其次满足(个数等于)个数,这样称为合法括号例如:()    ((()))  (()())了解了合法括号之后,先来看第一个 合法括号的深度问题例题1对于一个合法的括号序列我们又有以下定义它的深度:1、空串""的深度是02、如果字符串"X"的深度是x,字符串"Y"的深度是y,那么字符串"XY"的深度为max(x,y) 3、如果"X"的深度是x,那么字符串".

Nixo 4468

每日一题(16)——求子串最大积&最大和

求子串最大积                                                                        问题: 给定一个长度为N的整数数组, 只允许用乘法, 不能用除法, 计算任意 (N-1)个数的组合乘积中最大的一组,并写出算法的时间复杂度。 解法1. •我们把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小。由于

小熊不去实验室 1800
上一篇: hdu 5247 找连续数(灵活,超时题)
下一篇: CF 549G swap(前-1,后+1),问是否能变成递增序列(灵活题)
ccyy-
博客等级 码龄12年 31粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值