code forces 401C Team 题目链接:http://codeforces.com/problemset/problem/401/C
题目大意:还是玩card(真无聊),每张card上写着0或1,给出n张0、m张1,把它们排成一行,使得不存在两个0相邻、三个1相邻。
题目分析:如果0比较多,那排列大概就是01010101这样的,如果1比较多,那就是110110110这样的,我的想法是,设有x个110组,y个10组,那么x+y==n&&2*x+y==m,解方程组即可。(别忘了判断边界)
code:
#include<stdio.h>
int main()
{
int n,m,i,sum;
scanf("%d%d",&n,&m);
if(n>m+1||n*2+2<m)printf("-1\n");
else if(n==m+1)
{
putchar('0');
for(i=0;i<m;i++)
{
printf("10");
}
putchar('\n');
}
else if(n==(m+1)/2-1)
{
printf("%d",m%2?1:11);
for(i=0;i<n;i++)
{
printf("011");
}
putchar('\n');
}
else
{
int y=m-n,x=2*n-m;
for(i=0;i<y;i++)
{
printf("110");
}
for(i=0;i<x;i++)
{
printf("10");
}
putchar('\n');
}
return 0;
}PS:……
1145

被折叠的 条评论
为什么被折叠?



