题目链接:https://cn.vjudge.net/problem/UVALive-8078

题意

括号序列T是这样定义的:

  1. T是个空的
  2. T是(T), {T}, 或者 [T]
  3. T是两个T组成的,比如()()就是一个T

现在给一个n个字符长的串,问以每个字符为左端点的最长括号序列是多长。

思路

显然对i这个地方可以讨论一下:

如果i是个右括号,答案是0。

如果i是个左括号:

如果以i+1为起点的最长串后边的字符与左括号匹配,答案是加上这个字符后边的最长串。

如果不匹配,答案是0。

细节上注意不要越界即可,边界是dp[strlen]=0

提交过程

AC

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=2e5;
char str[maxn];
int sign[300], ans[maxn]; int main(void){
int T, kase=0; sign['(']=1;
sign['{']=2;
sign['[']=3;
sign['<']=4;
sign[')']=-1;
sign['}']=-2;
sign[']']=-3;
sign['>']=-4;
scanf("%d", &T);
while (T--){
scanf("%s", str); memset(ans, 0, sizeof(ans));
int len=strlen(str);
for (int i=len; i>=0; i--){
int elem=sign[str[i]]; if (elem<0) ans[i]=0;
else{
if (i+1<len && sign[str[i+1]]==elem*-1) ans[i]=2+ans[i+2];
else if (i+1<len){
int nxt=sign[str[ans[i+1]+i+1]];
// printf("%d %d --\n", nxt, elem);
if (nxt==elem*-1) ans[i]=ans[i+1]+2+ans[i+ans[i+1]+2];
else ans[i]=0;
}else if (i+1>=len) ans[i]=0;
}
} printf("Case %d:\n", ++kase);
for (int i=0; i<len; i++)
printf("%d\n", ans[i]);
} return 0;
}
Time Memory Length Lang Submitted
49ms None 1116 C++ 5.3.0 2018-08-24 11:28:32

UVALive-8078 Bracket Sequence 简单dp的更多相关文章

  1. Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 栈/dp

    C. Longest Regular Bracket Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.c ...

  2. (CodeForces - 5C)Longest Regular Bracket Sequence(dp+栈)(最长连续括号模板)

    (CodeForces - 5C)Longest Regular Bracket Sequence time limit per test:2 seconds memory limit per tes ...

  3. UVaLive 3530 Martian Mining (简单DP)

    题意:给定一个n*m的网格,每个格子里有A矿和B矿数量,A必须由右向左运,B只能从下向上运,中间不能间断,问最大总数量. 析:一个简单DP,dp[i][j] 表示 从 (0, 0) 到 (i, j) ...

  4. 【Codeforces】CF 5 C Longest Regular Bracket Sequence(dp)

    题目 传送门:QWQ 分析 洛谷题解里有一位大佬讲的很好. 就是先用栈预处理出可以匹配的左右括号在数组中设为1 其他为0 最后求一下最长连续1的数量. 代码 #include <bits/std ...

  5. DP UVALive 6506 Padovan Sequence

    题目传送门 /* 题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大 DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + ...

  6. CodeForces - 224C. Bracket Sequence (栈模拟)简单做法

    A bracket sequence is a string, containing only characters "(", ")", "[&quo ...

  7. Educational Codeforces Round 4 C. Replace To Make Regular Bracket Sequence 栈

    C. Replace To Make Regular Bracket Sequence 题目连接: http://www.codeforces.com/contest/612/problem/C De ...

  8. Codeforces Round #302 (Div. 2) C. Writing Code 简单dp

    C. Writing Code Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544/prob ...

  9. 找规律 UVALive 6506 Padovan Sequence

    题目传送门 /* 找规律:看看前10项就能看出规律,打个表就行了.被lld坑了一次:( */ #include <cstdio> #include <algorithm> #i ...

随机推荐

  1. 【vue】v-if和v-show的区别

    今天来捋一下vue中的v-if与v-show的区别 先来看一下vue官方文档对他们的解释 2.从实现方式来看: v-if是当依赖的值变为false时,直接让元素消失,html代码也会消失,相当于直接在 ...

  2. nyoj399-整除个数

    整除个数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 1.2.3- -n这n(0<n<=1000000000)个数中有多少个数可以被正整数b整除. 输入 ...

  3. HDU 5279 YJC plays Minecraft (分治NTT优化DP)

    题目传送门 题目大意:有$n$个小岛,每个小岛上有$a_{i}$个城市,同一个小岛上的城市互相连接形成一个完全图,第$i$个小岛的第$a_{i}$个城市和第$i+1$个小岛的第$1$个城市连接,特别地 ...

  4. Django入门--模板路径配置及渲染

    模板就是前端的页面,Django把html源码写到模板文件中,然后通过特定方法渲染后交给客户端. 模板路径设置方法有两种,分别是在项目目录下设置以及在应用目录下设置. 模板查找顺序:优先在DIRS设置 ...

  5. 如何在GitHub部署自己的个人网站

    前段时间在B站学习了怎样做一个静态网页(up主是  表严肃 ),朋友问我他能不能访问我的这个静态网页,我说还没把它挂到网上.今天看见一篇文章说可以在GitHub部署自己的个人网站,心血来潮,想做一个玩 ...

  6. 【Codeforces 276C】Little Girl and Maximum Sum

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 最后的和. 其实可以看成是 ∑bi*ai 的形式. 这里的bi这个系数表示的是有多少个区间覆盖了ai这个元素. 既然这样的话. 那么 ...

  7. redis-ubuntu环境下安装

    ubuntu环境下联网安装 进去系统后,首先修改root的密码 命令 sudo passwd 设置新的密码:XXX 切换为root操作 $ wget http://download.redis.io/ ...

  8. C语言--指针(一)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenVveW91MTMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  9. poj 2683 Ohgas&#39; Fortune 利率计算

    水题. 代码: //poj 2683 //sep9 #include <iostream> using namespace std; int main() { int cases; sca ...

  10. comp.lang.javascript FAQ [zz]

    comp.lang.javascript FAQ Version 32.2, Updated 2010-10-08, by Garrett Smith FAQ Notes 1 Meta-FAQ met ...