小委出发

    题目大意:一个长度为n的字符串,由()[]{}组成。求最长的和谐字符串:我们对最长和谐字符串的定义就是每一个括号有一个性质相同的括号与之匹配,这两个括号中间要么为空,要么也是和谐的。几个连续的和谐串连在一起也是和谐的。

    注释:k<=$5\cdot 10^6$

      想法:开始的想法是dp,怎么dp呢?我们设定dp[i]表示以第i个点为最后一个点的最长和谐子串。显然我们只需要记录一下每一个dp值的对应的位置即可,但是不好写,特判有些多,我们用一种很强的方式来解决这个问题(鸣谢Edward♂Frog)。我们用栈维护。如何用栈进行维护呢?如果当前元素是左边的括号,我就将其扔进栈里。如果当前元素是右括号,我就将它和栈顶元素进行比较,如果它和栈顶元素可以匹配,我就将它们双双弹出栈,将这两个元素的下标记为true,如果不是,我就清空栈。最后,从一到k每一个数对应true或false。我们只需要求最长的true的序列。这样为什么是对的?如果当前元素和栈顶元素相等,那么证明他们之间的元素是一定满足条件后被弹出的。所以,我们将这两个元素标记后,对于每一个和谐子串都一定有一串连续的1。我们只需要求最长的连续的1即可......

    最后,附上丑陋的代码......

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int v[];
char s[];
int a[];
int x[];
int dp[];
int main()
{
scanf("%s",s+);
int k=strlen(s+);
for(int i=;i<=k;i++)
{
if(s[i]=='(') a[i]=;
else if(s[i]=='[') a[i]=;
else if(s[i]=='{') a[i]=;
else if(s[i]=='}') a[i]=;
else if(s[i]==']') a[i]=;
else a[i]=;
}
int top=;
for(int i=;i<=k;i++)
{
if(a[i]<=)
{
x[++top]=i;
}
else
{
if(a[x[top]]+a[i]==)
{
v[x[top]]=;
v[i]=;
top--;
}
else top=;
}
}
for(int i=;i<=k;i++)
{
if(v[i])
{
dp[i]=max(dp[i],dp[i-]+);
}
}
int maxk=;
int maxn=-;
for(int i=;i<=k;i++)
{
if(dp[i]>maxn) maxn=dp[i],maxk=i;
}
for(int i=maxk-maxn+;i<=maxk;i++) printf("%c",s[i]);
}

    小结:错误,最后维护可以用并查集,虽然没必要

    未经博主允许,严禁转载

小委出发vijos-1572 jdoj-1572的更多相关文章

  1. 【BZOJ 1572】 1572: [Usaco2009 Open]工作安排Job(贪心+优先队列)

    1572: [Usaco2009 Open]工作安排Job Description Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单 ...

  2. SDWC补题计划

    2018的寒假去了SD的冬令营,因为一班二班难度悬殊,对我很不友好,几乎什么也没学会,但是我把两个班的课件都存了下来,现在慢慢把两个班的例题以及课后题都补一补(毕竟冬令营的钱不能白花). 这些题目横跨 ...

  3. 微信小程序开发问题汇总

    前言 经过将近一个多月的开发,我们团队开发的微信小程序 "出发吧一起" 终于开发完成,现在的线上版本为 2.2.4-beta 版 本文档主要介绍该小程序在开发中所用到的技术,已经在 ...

  4. 小白月赛13 小A的路径 (矩阵快速幂求距离为k的路径数)

    链接:https://ac.nowcoder.com/acm/contest/549/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  5. 微信小程序开发入门(一)

     小程序学习入门--(一) 最近自己学习微信小程序的过程当中自己总结出来的知识点,我会不断地更新和完善! 小程序的开发工具 一台电脑 熟悉HTML.CSS.JS基本语法 开发工具: 微信web开发者工 ...

  6. NOIP 2008 笨小猴

    洛谷 P1125 笨小猴 洛谷传送门 JDOJ 1539: [NOIP2008]笨小猴 T1 JDOJ传送门 Description 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到 ...

  7. cobbler自动装机服务简介与配置

    cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使用命令行 ...

  8. BeanPostProcessor —— 连接Spring IOC和AOP的桥梁

    之前都是从大Boss的视角,来介绍Spring,比如IOC.AOP. 今天换个视角,从一个小喽啰出发,来加深对Spring的理解. 这个小喽啰就是, BeanPostProcessor (下面简称 B ...

  9. POSIX 线程取消点的 Linux 实现

    http://blog.csdn.net/stevenliyong/article/details/4364039 原文链接:http://blog.solrex.cn/articles/linux- ...

随机推荐

  1. dojo中取查询出来的地市维表数据的id

    1.页面中引入隐藏域 <input type="hidden" id="area_desc"/> 2.通过在属性中设置 onchange:funct ...

  2. RAID10与RAID01比较,RAID10与RAID5比较

    RAID10和RAID01的比较RAID10是先做镜象,然后再做条带. RAID01则是先做条带,然后再做镜象.    比如以6个盘为例,RAID10就是先将盘分成3组镜象,然后再对这3个RAID1做 ...

  3. Caused by:java.sql.BatchUpdateException:ORA-02291

    1.错误描述 Caused by:java.sql.BatchUpdateException:ORA-02291:违反完整约束条件(PEKING.FKA844BA60FCCDD33)-未找到父项关键字 ...

  4. 【JDK1.8】JUC.Lock综述

    一.前言 前段时间结束了jdk1.8集合框架的源码阅读,在过年的这段时间里,一直在准备JUC(java.util.concurrent)的源码阅读.平时接触的并发场景开发并不很多,但是有网络的地方,就 ...

  5. 【HDU2255】奔小康赚大钱

    题面 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓 ...

  6. 【POJ2387】Til the Cows Come Home (最短路)

    题面 Bessie is out in the field and wants to get back to the barn to get as much sleep as possible bef ...

  7. Bzoj3992:[SDOI2015]序列统计

    题面 Bzoj Sol pts 1 大暴力很简单,\(f[i][j]\)表示到第\(i\)个位置,前面积的模为\(j\)的方案 然后可以获得\(10\)分的好成绩 # include <bits ...

  8. office 2013补丁包更新

    总是有客户发现使用office 2013 下的插件有问题,这个问题出现在低版本上,所以要给office 2013打上补丁,打上后,运行插件ok,出现的bug解决掉了.那么给office打补丁包就成了解 ...

  9. angular路由详解四(子路由)

    子路由是相对路由 路由配置部分: 主要是children const routes: Routes = [ {path:'home', component: HomeComponent, childr ...

  10. JS中的闭包问题

    一.闭包:在函数外也可使用局部变量的特殊语法现象 全局变量 VS 局部变量: 全局变量:优点:可共享,可重用; 缺点:在任意位置都可随意修改——全局污染 局部变量:优点:安全 缺点:不可共享,不可重用 ...