CodeForces - 976A:Minimum Binary Number(水題)

想要「替身」的伊麗莎白aru發表於2020-12-12

連結https://vjudge.net/problem/CodeForces-976A

題目
String can be called correct if it consists of characters “0” and “1” and there are no redundant leading zeroes. Here are some examples: “0”, “10”, “1001”.

You are given a correct string s.

You can perform two different operations on this string:

  1. swap any pair of adjacent characters (for example, “101” “110”);
  2. replace “11” with “1” (for example, “110” “10”).

Let val(s) be such a number that s is its binary representation.

Correct string a is less than some other correct string b iff val(a) < val(b).

Your task is to find the minimum correct string that you can obtain from the given one using the operations described above. You can use these operations any number of times in any order (or even use no operations at all).

題意
給一個長為n的序列,每次都可以做兩種操作之一:
1.把一對0和1的位置互換;
2.把11變成1
輸出一個可以獲得的最短序列。
(如果最短序列中有1和0,1一定先於0出現,例如100而不是001)

思路
水題,稍微想一想就好了。
首先序列中無論有幾個1,輸出都只有一個1。(不明白的可以稍微想想)
然後再輸出所有的0就ok。

伊麗莎白!

在這裡插入圖片描述
程式碼

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    int a=0,b=0;
    cin>>n;
    string ss;
    cin>>ss;
    for(int i=0;i<n;i++)
    {
        if(ss[i]=='0')
            a++;
        if(ss[i]=='1')
            b++;
    }
    if(b!=0)
        cout<<'1';
    for(int i=0;i<a;i++)
        cout<<'0';
    cout<<endl;
}

因為4級斷更一天,有點可惜。試是我考的,過不過是天決定的。

在這裡插入圖片描述

相關文章