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

    3016: [Usaco2012 Nov]Clumsy Cows

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 91  Solved: 69
    [Submit][Status][Discuss]

    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。

    HINT

     

    Source

    Silver

    题解:一个很神奇的模拟,感觉自己水水哒

     1 /**************************************************************
     2     Problem: 3016
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:72 ms
     7     Memory:220 kb
     8 ****************************************************************/
     9  
    10 var ch:char;s,ans:longint;
    11 begin
    12      while not(eoln) do
    13            begin
    14                 read(ch);
    15                 if ch='(' then inc(s) else
    16                    begin
    17                         dec(s);
    18                         if s<0 then
    19                            begin
    20                                 inc(s,2);
    21                                 inc(ans);
    22                            end;
    23                    end;
    24            end;
    25      ans:=ans+s div 2;
    26      writeln(ans);
    27 end.
  • 相关阅读:
    OCS 2007 R2单机测试虚拟环境的搭建(windows server 2008 R2 x64)
    Linq的概念解析
    WCF Data Service与net.tcp承载分析
    codeplex上20个有意思的WPF程序
    各种SmartPhone上的跨平台开源框架的总结
    新开发Apple Store上软件的实施步骤
    VSTO应用程序中加入键盘钩子
    绝非偶然 苹果iPhone领先5年背后的迷思 【推荐】
    Windows上安装Mac OS虚拟机
    Visual Studio 远程调试的步骤
  • 原文地址:https://www.cnblogs.com/HansBug/p/4394536.html
Copyright © 2011-2022 走看看