Codeforces Round #235 (Div. 2) C Team 构造法
来源:互联网 发布:批处理测试端口 编辑:程序博客网 时间:2024/06/06 03:23
题目链接:http://codeforces.com/contest/401/problem/C
题目大意:输入两个整数n,m。n代表0的个数,m代表1的个数。要求输出一串数字(只包含0与1),且0不能相邻,三个1不能连续。如果无解则输出-1.
解题思路:
先判断无解的状态,当这串数字是这样的时候:11011011.....011 此时的0的个数是最少的,即2*n+2==m,化简得到:2*n+2>=m
当这串数字是这样的时候:0101010....010 此时的0的个数是最多的,即m==n-1,化简得到:m>=n-1
还有几种状态需要特别判断一下:
1、类似11011011... 此时 m==n*2+2
2、类似110......1101 此时 m==n*2+1
3、当n>m
4、当n<m
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<string>#include<stack>#include<queue>#include<vector>#include<algorithm>#include<iostream>#define maxn 3000000using namespace std;#ifdef __int64typedef __int64 LL;#elsetypedef long long LL;#endifint n,m;int main(){ while(~scanf("%d%d",&n,&m)) { if(m<n-1||m>2*n+2)//排除无解的情况 printf("-1\n"); else { if(m==n*2+2)//情况一 { for(int i=1;i<=n;i++) { printf("110"); } printf("11\n"); } else if(m==n*2+1)//情况二 { for(int i=1;i<=n;i++) { printf("110"); } printf("1\n"); } else if(n>m)//情况三 { while(n>m) { printf("010"); n-=2; m--; } for(int i=1;i<=n;i++) printf("10"); printf("\n"); } else//情况四 { while(m>n) { printf("110"); m-=2; n--; } for(int i=1;i<=n;i++) printf("10"); printf("\n"); } } } return 0;}
0 0
- Codeforces Round #235 (Div. 2) C Team 构造法
- Codeforces Round #235 (Div. 2)C. Team
- Codeforces Round #235 (Div. 2)__C. Team
- Codeforces Round #287 (Div. 2) C. (构造)
- Codeforces Round #105 (Div. 2) C 构造
- Codeforces Round #287 (Div. 2) C 构造
- Codeforces Round #372 (Div. 2) C 构造
- Codeforces Round #217 (Div. 2) / 370C Mittens (构造&贪心)
- 构造数列Codeforces Round #261 (Div. 2)C
- Codeforces Round #268 (Div. 2) C 24 Game [构造]
- Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)
- Codeforces Round #275 (Div. 2) C. Diverse Permutation 构造
- Codeforces Round #283 (Div. 2) C. Removing Columns 模拟+构造
- Codeforces Round #285 (Div. 2) C. Misha and Forest 构造
- *Codeforces Round #337 (Div. 2) C Harmony Analysis 构造题
- Codeforces Round #342 (Div. 2)(C)构造
- Codeforces Round #337 (Div. 2) C. Harmony Analysis (构造)
- Codeforces Round #337 (Div. 2) C 找规律+构造
- 【LeetCode】Climbing Stairs
- C++回调函数(callback)的使用
- 汇编引导区和测试
- 详细解析Java中抽象类和接口的区别
- hdu 1677 Nested Dolls(贪心+LIS模板题)
- Codeforces Round #235 (Div. 2) C Team 构造法
- Activity的使用(五):修改activity的背景色
- 算法概论思维导图
- java基础(数组)之冒泡排序
- ubuntu 安装oracle 11g
- Ubuntu下安装Qt5.2.1+android环境的注意点
- CentOS 安装flash player
- POJ3007 Organize Your Train part II
- Linux学习笔记二十八Network_hw