小委出发

    题目大意:一个长度为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. python3.4 UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position

    python3.4 UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 实用python的时候 打开一个csv的文件出 ...

  2. JAVA中线程同步方法

    JAVA中线程同步方法 1  wait方法:         该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所 ...

  3. java.lang.IllegalArgumentException: Document base E:\Eclipse\workspace\.metadata\.plugins\org.eclips

    1.错误描述 四月 13, 2015 5:56:55 下午 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based A ...

  4. Linux显示USB设备

    Linux显示USB设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lsusb -tv /: Bus 08.Port 1: Dev 1, Class=ro ...

  5. PyCharm 2017.3 下载与安装

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.下载 (1).下载链接: https://www.jetbrains.com/pycharm ...

  6. .Net Core从命令行读取配置文件

    最近在学习博客园腾飞(jesse)的.Net Core视频教程,收益匪浅,在此作推荐 : http://video.jessetalk.cn/ 言归正传,.Net Core应用程序中如何通过命令行读取 ...

  7. jquery回调函数的一个案例

    1.引言 今天在学习<jQuery基础教程>在学习编写插件的时候,书中说利用回调函数来当参数,会极大的提高程序的灵活性.对回调函数很陌生.研究了一下给的示例程序.感觉对回调函数有了基本的了 ...

  8. 使input文本框不可编辑的3种方法

    一:disabled disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值.设置后文字的颜色会变成灰色.d ...

  9. 描述一下Spring框架的作用和优点?

    Spring框架的作用和优点如下: 1.Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,减少侵入: 2.Spring提供的IOC和AOP应用,可以将组建的耦合度降低至 ...

  10. Link带参数的Verilog模块(Design Compiler)

    在Design Compiler中,Verilog文件可以用read_verilog命令读入,用link命令连接.以下是连接两个文件RegisterFile.v和Test.v的脚本: # Read d ...