首页 > 代码库 > BZOJ3016 [Usaco2012 Nov]Clumsy Cows
BZOJ3016 [Usaco2012 Nov]Clumsy Cows
蒟蒻还是刷刷水。。。(不要问我这么沙茶的题为何要写题解)
Orz 海之树:"考虑每一个右括号必须要有一个在它之前的左括号相配对,所以用sum记录到当前位置位置还没有配对的左括号的数量。
如果为负数这说明必须有一个右括号要变为左括号,即ans++且sum+=2(因为少了一个右括号的同时多了一个左括号)。
最后加上剩余的未配对的左括号的数量的二分之一即为答案。"
1 /************************************************************** 2 Problem: 3016 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:36 ms 7 Memory:804 kb 8 ****************************************************************/ 9 10 #include <cstdio>11 12 using namespace std;13 14 int ans, sum;15 16 int main() {17 char ch = getchar();18 while (ch == ‘(‘ || ch == ‘)‘) {19 if (ch == ‘(‘) ++sum;20 else --sum;21 if (sum < 0) ++ans, sum += 2;22 ch = getchar();23 }24 ans += sum >> 1;25 printf("%d\n", ans);26 return 0;27 }
BZOJ3016 [Usaco2012 Nov]Clumsy Cows
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。