zoukankan      html  css  js  c++  java
  • bzoj3016 [Usaco2012 Nov]Clumsy Cows

    Description

    Bessie the cow is trying to type a balanced string of parentheses into her new laptop, but she is sufficiently clumsy (due to her large hooves) that she keeps mis-typing characters. Please help her by computing the minimum number of characters in the string that one must reverse (e.g., changing a left parenthesis to a right parenthesis, or vice versa) so that the string would become balanced. There are several ways to define what it means for a string of parentheses to be "balanced". Perhaps the simplest definition is that there must be the same total number of ('s and )'s, and for any prefix of the string, there must be at least as many ('s as )'s. For example, the following strings are all balanced:
    ()
    (())
    ()(()())
    while these are not:
    )(
    ())(
    ((())))
     
    问题描述
    给定长度为n的一个括号序列,每次修改可以修改一个位置的括号,若这个括号为’(‘,则修改为’)’,若这个括号为’)’,则修改为’(‘,问最少修改多少个使得原括号序列合法。
    其中:
         ()是合法的;
         A是合法的,则(A)是合法的;
         AB都是合法的,则AB是合法的。
     

    Input

           一个长度为n个括号序列。
     

    Output

     
           最少的修改次数。
     

    Sample Input

    ())(

    Sample Output

    2

    样例说明
    修改为()(),其中红色部分表示修改的括号。

    数据范围
    100%的数据满足:1 <= n <= 100,000。

    模拟……(姑且算是贪心?)

    用s记录前面多出来的'('的个数,每次读入'('s++,读入')'s--

    s<0时表示没有‘(’还多出')'就需要把')'变成'(',这样s+=2,ans++

    最后如果s!=0的时候还要把一半的'('变成')',就是ans+=s/2

    #include<cstdio>
    int n,s,ans;
    char ch;
    int main()
    {
    	while (scanf("%c",&ch)!=EOF)
    	  {
    	  	if (ch=='
    ')break;
    	  	if (ch=='(')s++;
    	  	if (ch==')')
    	  	{
    	  		s--;
    	  		if (s<0){s+=2;ans++;}
    	  	}
    	  }
    	ans+=s/2;
    	printf("%d",ans);
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    Windows 2008 R2 安装 Windows phone 7 开发环境
    win 7,win2008 无法给新建用户完全权限
    基于Ajax的Asp.Net 简易在线聊天室
    phpwind ecshop 用户整合
    UVALive 3942 Remember the Word(字典树+DP)
    UVA 11732 strcmp() Anyone? (压缩版字典树)
    UVA 11992 Fast Matrix Operations(线段树:区间修改)
    hdu 2222 Keywords Search(AC自动机模版题)
    动态规划基础练习笔记
    递归与分治策略基础练习笔记
  • 原文地址:https://www.cnblogs.com/zhber/p/4035903.html
Copyright © 2011-2022 走看看