C. Team1400 / 思维 贪心

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Team1400 / 思维 贪心相关的知识,希望对你有一定的参考价值。


https://codeforces.com/contest/401/problem/C
分三种情况考虑:

  • n==m显然可以
  • n>m 我们尽量 1001 先搞,尽可能的消耗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. Exams1400 / 贪心 + 排序

C. Phoenix and Towers1400 / 贪心

C. Phoenix and Towers1400 / 贪心

C. Given Length and Sum of Digits...1400 / 贪心

C. Rotation Matching1400 / 思维 数组循环移动