【BZOJ】3016: [Usaco2012 Nov]Clumsy Cows

原创 2016年08月28日 16:14:05


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

题解:

  直接乱搞。。我们发现,当一个括号序列合法的时候,当且仅当这个序列的每一个位置之前的所有左括号的个数都大于等于右括号的个数,所以我们可以用计数器模拟一个类似栈的东西,然后如果栈内元素为0(即之前所有左右括号数目相等),如果这个时候来的是右括号的时候,我们就可以判定为要改变这个括号。最后把栈内的多余的左括号的一半改成右括号就可以了

 

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAXN=10001;
int main(int argc, char *argv[])
{
	int d=0,n,i;
	int ans=0;
	char x;
	while(cin>>x)
	{
		if(x=='(') d++; 
		else if(x==')'&&d>=1) d--;
		else if(x==')'&&d==0) ans++,d++;
	}
	ans+=(d+1)/2;
	printf("%d\n",ans);
	return 0;
}


bzoj3016 [Usaco2012 Nov]Clumsy Cows

Description Bessie the cow is trying to type a balanced string of parentheses into her new laptop...
  • zhb1997
  • zhb1997
  • 2014年09月26日 22:50
  • 492

3016: [Usaco2012 Nov]Clumsy Cows

3016: [Usaco2012 Nov]Clumsy Cows Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 151  Solved: 119 ...
  • CRZbulabula
  • CRZbulabula
  • 2016年08月10日 08:12
  • 117

bzoj 3016: [Usaco2012 Nov]Clumsy Cows 栈

→题目链接← 说是栈,其实就用一个变量记录下就好,我用的sum 碰到(就++,碰到)就-- 当sum为负时一定是不合法的,这时候一定要改一下,所以ans++ 然后令sum等于1,因为把...
  • everlasting_20141622
  • everlasting_20141622
  • 2017年08月14日 09:24
  • 108

BZOJ 3016: [Usaco2012 Nov]Clumsy Cows

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3016   比较有意思的一道题,似乎哪次打ACM的时候碰到过类似的   算是贪心题吧 ...
  • wry0112
  • wry0112
  • 2017年07月09日 20:01
  • 74

bzoj3016: [Usaco2012 Nov]Clumsy Cows

右括号匹配不到答案加一,左括号多2个答案加一。#include #include #include #include using namespace std; int main() { int...
  • mengbi_er
  • mengbi_er
  • 2017年07月05日 19:24
  • 110

【USACO 2008 Nov Gold】 1.Mixed Up Cows 状压DP、

题解: 首先考虑dfs,但是看到答案的“64bit”就放弃了吧、 所以肯定是组合数、状压DP什么的,尤其是那个16,标准的状压数。 好吧,就是状压DP。 f[i][j]表示i是状压的0...
  • Vmurder
  • Vmurder
  • 2015年01月02日 11:46
  • 1329

bzoj1752 [Usaco2005 qua]Til the Cows Come Home

Description Bessie is out in the field and wants to get back to the barn to get as much sleep as ...
  • zhb1997
  • zhb1997
  • 2014年07月12日 23:58
  • 319

USACO 2008 Nov Gold 1.Mixed Up Cows

描述: Each of Farmer John's N (4 Gangsta cows are rebellious and line up to be milked in an order...
  • ww140142
  • ww140142
  • 2015年04月08日 20:16
  • 736

BZOJ 2679: [Usaco2012 Open]Balanced Cow Subsets meet_in_the_middle / 折半搜索

2679: [Usaco2012 Open]Balanced Cow Subsets Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 316  Sol...
  • BlackJack_
  • BlackJack_
  • 2017年07月05日 08:40
  • 287

BZOJ 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 bfs

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=16151615: [Usaco2008 Mar]The Loathesome Hay Baler...
  • ALPS233
  • ALPS233
  • 2016年05月17日 14:04
  • 571
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【BZOJ】3016: [Usaco2012 Nov]Clumsy Cows
举报原因:
原因补充:

(最多只允许输入30个字)