ClumsyCowsS(队列)

P3056[USACO12NOV]ClumsyCowsS

传送门 USACO12NOV]Clumsy Cows S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意

给出一个偶数长度的括号序列,问最少修改多少个括号可以使其平衡。

思路

队列。如果左括号存在一定能和一个右括号配对,如果发生配对,那么就忽视掉这一对括号。那么剩下的一定是))…)))((…(((分别是ri和le个,那么修改个数就是(le>>1)+(ri>>1)+(le&1)+(ri&1).

#include <iostream>
typedef long long ll;
#define qwe(i,a,b) for(int i=a;i<=b;i++)
#define ewq(i,a,b) for(int i=a;i>=b;i--)
inline ll rr(){ll f=1,x=0;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');return f*x;}
using namespace std;
const int INF=0x3f3f3f3f;//无穷大
const ll mod1=1e9+7;//取余
const ll mod2=1e9+9;
const int maxn=1e6+6;

/*给出一个偶数长度的括号序列,问最少修改多少个括号可以使其平衡*/
int main(int argc, char const *argv[]) {
    char c;int le=0,ri=0;
    while (scanf("%c",&c)!=EOF) {
        if(c=='(') le++;
        // 左括号>0那么可以和右括号配对,否则单独计入右括号,因为其无法配对
        else if(c==')') {if(le>0){le--;}else ri++;}
    }
    std::cout << (le>>1)+(ri>>1)+(le&1)+(ri&1) << '\n';
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值