CodeForces 556A Case of the Zeros and Ones 【贪心 字符串】

A. Case of the Zeros and Ones
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard 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 integer 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
Output the minimum length of the string that may remain after applying the described operations several times.

Examples
inputCopy
4
1100
output
0
inputCopy
5
01010
output
1
inputCopy
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: .

思路:本来苦恼每次查找还要删除比较麻烦 但是经过几个01字符串的试探,发现无论删除哪个位置的是01还是10都不会影响最后的结果。剩下的一定全是0或者全是1(只用比较谁多)。

#include<iostream>
#include<cmath>
using namespace std;
char num[200005];
int main()
{
    int n;
    cin>>n;
    char c;
    int cnt0 = 0;
    int cnt1 = 0;
    for(int i = 0;i<n;i++)
    {
        cin>>c;
        if(c=='0') cnt0++;
        else cnt1++;
    }
    int mini = min(cnt1,cnt0);
    cout<<n-mini*2<<endl;

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值