小委出发

    题目大意:一个长度为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. FC总线技术简介

    FC是由美国标准化委员会(ANSI)的X3T11小组于1988年提出的高速串行传输总线,解决了并行总线SCSI遇到的技术瓶颈,并在同一大的协议平台框架下可以映射更多FC-4上层协议.FC具备通道和网络 ...

  2. Java获取某年某月的最后一天

    Java获取某年某月的最后一天 1.设计源码 LastDayOfMonth.java: /** * @Title:LastDayOfMonth.java * @Package:com.you.free ...

  3. 芝麻HTTP:如何寻找爬虫入口

    寻找爬虫入口 1 .本次任务的入口 这个爬虫的更好的入口就是我们平常使用的搜索引擎.搜索引擎虽然有很多种,但是其实都是在干一件事,收录网页,处理,然后提供搜索服务.在平时使用的过程中,我们通常都是直接 ...

  4. 翻译--Thinking in React

    无聊翻译篇react入门文章,去年学习react时看了一遍,很不错的一篇文章. https://reactjs.org/docs/thinking-in-react.html 部分为意译,旨在让new ...

  5. 【转载】Spark运行架构

    1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个 ...

  6. [JSOI2008]球形空间产生器sphere

    Sol 设一个dis,就有n+1个方程,消掉dis,就只有n个方程,组成一个方程组,高斯消元就好(建议建立方程时推一下,很简单) # include <bits/stdc++.h> # d ...

  7. [BZOJ2879] [Noi2012] 美食节 (费用流 & 动态加边)

    Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽 ...

  8. 基于Redis的简单分布式锁的原理

    参考资料:https://redis.io/commands/setnx 加锁是为了解决多线程的资源共享问题.Java中,单机环境的锁可以用synchronized和Lock,其他语言也都应该有自己的 ...

  9. .NET Core 配置Configuration杂谈

    前言 .NET Core 在配置文件的操作上相对于.NET Framework做了不少改变,今天来聊一聊.关于Configuration的Package都是以Microsoft.Extensions. ...

  10. iOS学习——UITableViewCell两种重用方法的区别

    今天在开发过程中用到了UITableView,在对cell进行设置的时候,我发现对UITableViewCell的重用设置的方法有如下两种,刚开始我也不太清楚这两种之间有什么区别.直到我在使用方法二进 ...