博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3016: [Usaco2012 Nov]Clumsy Cows
阅读量:6152 次
发布时间:2019-06-21

本文共 2011 字,大约阅读时间需要 6 分钟。

3016: [Usaco2012 Nov]Clumsy Cows

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

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)是合法的;
③     若
A
B都是合法的,则
AB是合法的。
 

Input

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

Output

 
       最少的修改次数。
 

Sample Input

())(

Sample Output

2
样例说明
修改为()(),其中红色部分表示修改的括号。
数据范围
100%的数据满足:1 <= n <= 100,000。

HINT

 

Source

 

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

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 begin12      while not(eoln) do13            begin14                 read(ch);15                 if ch='(' then inc(s) else16                    begin17                         dec(s);18                         if s<0 then19                            begin20                                 inc(s,2);21                                 inc(ans);22                            end;23                    end;24            end;25      ans:=ans+s div 2;26      writeln(ans);27 end.

 

转载于:https://www.cnblogs.com/HansBug/p/4394536.html

你可能感兴趣的文章
asp.net开发mysql注意事项
查看>>
(转)Cortex-M3 (NXP LPC1788)之EEPROM存储器
查看>>
ubuntu set defult jdk
查看>>
[译]ECMAScript.next:TC39 2012年9月会议总结
查看>>
【Xcode】编辑与调试
查看>>
用tar和split将文件分包压缩
查看>>
[BTS] Could not find stored procedure 'mp_sap_check_tid'
查看>>
PLSQL DBMS_DDL.ALTER_COMPILE
查看>>
Activity生命周期
查看>>
高仿UC浏览器弹出菜单效果
查看>>
Ubuntu忘记密码,进不了系统的解决方法
查看>>
[原创]白盒测试技术思维导图
查看>>
<<Information Store and Management>> 读书笔记 之八
查看>>
Windows 8 开发之设置合约
查看>>
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>