[ 9.28 ]CF每日一题系列—— 940A规律构造

Posted df-yimeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 9.28 ]CF每日一题系列—— 940A规律构造相关的知识,希望对你有一定的参考价值。

Description:

  输入a,b,x,给你a个0,b个1,你要给出一个组合,让这个组合里存在x位,使得这x为和其x+1位不相等

Solution:
  因为肯定有一个正确的答案,所以钻了一下空子,贪心,让个数多的在前,然后0101这样添加,知道最后一个需要满足的x,因为我这么贪心可定是能找到一个满足的,所以对于最后一个必然存在一个0/1和当前的倒数第一位不同,所以觜最后连续填充0/1,的到最后一个满足的x

Code:

  

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int main()
{
    int a,b,x;
    while(~scanf("%d%d%d",&a,&b,&x))
    {
        swap(a,b);
        int usenum = 1;
        if(a < b)usenum = 0;
        printf("%d",usenum);
        if(usenum == 0)b--;
        else a--;
        int out = usenum;
        for(int i = 1;i < x;++i)
        {
            out = i & 1 == 1 ? usenum^1 : usenum;
            if(out == 1)a--;
            else b--;
            printf("%d",out);
        }
        if(out == 1)
        {
            while(a)
            {
                printf("1");
                a--;
            }
            while(b)
            {
                printf("0");
                b--;
            }
        }
        else
        {
            while(b)
            {
                printf("0");
                b--;
            }
            while(a)
            {
                printf("1");
                a--;
            }
        }
        printf("
");
    }
    return 0;
}

 


以上是关于[ 9.28 ]CF每日一题系列—— 940A规律构造的主要内容,如果未能解决你的问题,请参考以下文章

CF每日一题系列 —— 415A

[ 10.03 ]CF每日一题系列—— 534B贪心

[ 9.12 ]CF每日一题系列—— 960B暴力数组

[ 10.4 ]CF每日一题系列—— 486C

[ 10.08 ]CF每日一题系列—— 602B

[ 9.11 ]CF每日一题系列—— 441C暴力模拟