1 条题解
-
0
题面
思路
其实这道题很抽象,因为它根本没告诉你这个深度怎么算。
再看一眼数据范围:,模拟也不行了。怎么做呢?
我们发现当有一个单独的左括号时,深度会加一,当有一个单独的右括号时,深度会减一。
借助这个发现,这个题就很简单了。只要我们读入一个字符,当这个字符是左括号时,深度加 。如果读入这个左括号后,深度超过了限制,那就把深度减 。当这个字符是右括号时,深度加 ,如果读入这个右括号后,深度小于 ,那就把深度加 。
代码
#include<bits/stdc++.h> using namespace std; int ans,sum,n,m; char a; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a; if(a=='('){ sum++; if(sum>m){ sum-=2; ans++; } } if(a==')'){ sum--; if(sum<0){ sum+=2; ans++; } } } cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 7134
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者