C. Team1400 / 思维 贪心
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Team1400 / 思维 贪心相关的知识,希望对你有一定的参考价值。
https://codeforces.com/contest/401/problem/C
分三种情况考虑:
n==m
显然可以n>m
我们尽量10
或01
先搞,尽可能的消耗0,然后剩下的分类讨论n<m
我们先尽可能的101
先尽量的消耗1,剩下的分类讨论。
#include<bits/stdc++.h>
using namespace std;
int n,m;
void solve()
{
string ans;
bool flag=false;
if(n==m)
{
flag=true;
while(n) ans+="10",n--,m--;
}
else if(n>m)
{
while(n&&m) ans+="01",n--,m--;
if(m<=3) flag=true;
if(n>=2) flag=false;
if(n) ans+="0",n--;
while(m>2) ans=ans+"1",m--;
while(m) ans="1"+ans,m--;
}
else if(m>n)
{
int temp=min(m-n,n);
while(temp) ans+="110",n--,m-=2,temp--;
while(n&&m) ans+="10",n--,m--;
if(n<=1&&m<=2) flag=true;
if(n) ans="0"+ans;
while(m) ans+="1",m--;
}
if(flag) cout<<ans;
else puts("-1");
}
int main(void)
{
cin>>n>>m;
solve();
return 0;
}
以上是关于C. Team1400 / 思维 贪心的主要内容,如果未能解决你的问题,请参考以下文章
C. A and B and Team Training1300 / 思维 贪心 枚举
C. Phoenix and Towers1400 / 贪心
C. Phoenix and Towers1400 / 贪心