CodeForces 556A Case of the Zeros and Ones
2016-07-20 09:39
369 查看
题目链接:http://codeforces.com/problemset/problem/556/A
memory limit per test:256 megabytes
input:standard input
output:standard output
Andrewid the Android is a galaxy-famous detective. In his free time he likes to think about strings containing zeros and ones.
Once he thought about a string of length
n consisting of zeroes and ones. Consider the following operation: we choose any two
adjacent positions in the string, and if one them contains 0, and the other contains 1, then we are allowed to remove these two digits from the string, obtaining a string of length
n - 2 as a result.
Now Andreid thinks about what is the minimum length of the string that can remain after applying the described operation several times (possibly, zero)? Help him to calculate this number.
n (1 ≤ n ≤ 2·105), the length of the string that Andreid has.
The second line contains the string of length
n consisting only from zeros and ones.
Output
Input
Output
Input
Output
.
In the second sample test it is possible to change the string like the following:
.
In the third sample test it is possible to change the string like the following:
.
思路:STL的stack。先将最初的一个字符入栈,然后枚举整个串,如果栈非空且栈顶和当前字符是01串,就弹出栈顶字符,否则将字符入栈。最后只要检查栈内有几个字符即可。
附上AC代码:
#include <bits/stdc++.h>
using namespace std;
stack<char> s;
string str;
int n;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> str;
s.push(str[0]);
for (int i=1; i<str.size(); ++i){
if (str[i]=='0' && !s.empty() && s.top()=='1')
s.pop();
else if (str[i]=='1' && !s.empty() && s.top()=='0')
s.pop();
else
s.push(str[i]);
}
cout << s.size() << endl;
return 0;
}
Case of the Zeros and Ones
time limit per test:1 secondmemory limit per test:256 megabytes
input:standard input
output:standard output
Andrewid the Android is a galaxy-famous detective. In his free time he likes to think about strings containing zeros and ones.
Once he thought about a string of length
n consisting of zeroes and ones. Consider the following operation: we choose any two
adjacent positions in the string, and if one them contains 0, and the other contains 1, then we are allowed to remove these two digits from the string, obtaining a string of length
n - 2 as a result.
Now Andreid thinks about what is the minimum length of the string that can remain after applying the described operation several times (possibly, zero)? Help him to calculate this number.
Input
First line of the input contains a single integern (1 ≤ n ≤ 2·105), the length of the string that Andreid has.
The second line contains the string of length
n consisting only from zeros and ones.
Output
Output the minimum length of the string that may remain after applying the described operations several times.Examples
Input4 1100
Output
0
Input
5
01010
Output
1
Input
8
11101111
Output
6
Note
In the first sample test it is possible to change the string like the following:.
In the second sample test it is possible to change the string like the following:
.
In the third sample test it is possible to change the string like the following:
.
思路:STL的stack。先将最初的一个字符入栈,然后枚举整个串,如果栈非空且栈顶和当前字符是01串,就弹出栈顶字符,否则将字符入栈。最后只要检查栈内有几个字符即可。
附上AC代码:
#include <bits/stdc++.h>
using namespace std;
stack<char> s;
string str;
int n;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> str;
s.push(str[0]);
for (int i=1; i<str.size(); ++i){
if (str[i]=='0' && !s.empty() && s.top()=='1')
s.pop();
else if (str[i]=='1' && !s.empty() && s.top()=='0')
s.pop();
else
s.push(str[i]);
}
cout << s.size() << endl;
return 0;
}
相关文章推荐
- 浅析STL中的常用算法
- STL区间成员函数及区间算法总结
- c++ STL容器总结之:vertor与list的应用
- C++在成员函数中使用STL的find_if函数实例
- 关于STL中list容器的一些总结
- Mysql Error Code : 1436 Thread stack overrun
- 关于STL中的map容器的一些总结
- 基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍
- 浅析stl序列容器(map和set)的仿函数排序
- STL list链表的用法详细解析
- stl容器set,map,vector之erase用法与返回值详细解析
- STl中的排序算法详细解析
- 关于STL中vector容器的一些总结
- 关于STL中set容器的一些总结
- 简单说说STL的内存管理
- Python算法之栈(stack)的实现
- STL与泛型编程(1)---模板
- Stack数据结构的特点后进先出的应用:大数据运算
- C 堆栈,运行时类型挷定
- jstack和线程dump分析