zoukankan      html  css  js  c++  java
  • 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
    ", ans);
    26     return 0;
    27 }
    View Code
    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    有序表查找
    遍历二叉树
    二叉树
    [Oracle]使用InstantClient访问Oracle数据库
    [部署]CentOS yum源
    [部署]CentOS安装PHP环境
    [部署]CentOS安装MariaDB
    [部署]CentOS安装apache
    Metrics.NET源码阅读笔记
    [JavaScript]catch(ex)语句中的ex
  • 原文地址:https://www.cnblogs.com/rausen/p/4135655.html
Copyright © 2011-2022 走看看