CF401C
扯在前面
本题的英文翻译很有意思,很符合CF大多题的故事风格,但是luogu的翻译更过于直白易懂
如果让我看英文故事做题我怕我都不知道该怎么下手
正文
题意:
构造一个01序列,包含n个0,m个1要求不存在连续2个0,或3个1
什么意思呢,简单说就是,理想状态下我们能把所有0和1消耗完且消耗的最多的情况就是这样
假设有十个1
那么最多有
010101010101010101010
十一个0
最少有
11011011011011
四个0
因此我们可以得出两种无解的情况:
- 0很多(1很少) 此时n>m+1 或m<n-1;
- 0很少(1很多) 此时n<(m+2)/2 或m>2n+2;
那我们就判断出来,输出-1;
之后再想想怎么构造01序列:
根据测试,我们可以发现,同样的m和n可能会构造出不同的01序列(像本题的样例一,若输出011也是对的,因为评测机只统计0和1的个数而不是具体排列方式)
那我们就找规律,做法如下:
- 我们可以选择构造01和011序列来把总序列拼出来;
- 当m=2n时,我们就可以愉快的输出n个011,同理,当m=n时,我们也可以愉快的输出n个01;
- 如果情况并不是正好怎么办,因为无解的情况已经判断完,所以我们手中的情况保证有解,所以如果多了1就在总序列前面输出,如果少了1就从把后面的011换成01就好了
之后输出,代码如下
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,tot1,tot2,cnt;
int main(){
scanf("%d%d",&n,&m);
if(m>2*n+2){
cout<<-1;
return 0;
}
if(m<n-1){
cout<<-1;
return 0;
}
if(m==n*2+1){cout<<1;m--;}
if(m==n*2+2){cout<<11;m-=2;}
while(n){
cout<<0;
if(m!=0){
if(m<n*2){cout<<1;m--;}
else {cout<<11;m-=2;}
}
n--;
}
return 0;
}
谢谢观看
CF401C的更多相关文章
随机推荐
- java实现读取excel文件内容
package excel; import java.io.FileInputStream; import java.io.InputStream; import java.text.SimpleDa ...
- C# 9 新特性 —— 增强的模式匹配
C# 9 新特性 -- 增强的模式匹配 Intro C# 9 中进一步增强了模式匹配的用法,使得模式匹配更为强大,我们一起来了解一下吧 Sample C# 9 中增强了模式匹配的用法,增加了 and/ ...
- C语言基础二维数组
(1)二位数组的定义int array[n][m],行下标的取值范围是0~n-1,列下标的取值范围是0~m-1,二维数组最大下标元素是array[n-1][m-1]:如定义一个3行4列的数组 int ...
- 【译】深入理解Rust中的生命周期
原文标题:Understanding Rust Lifetimes 原文链接:https://medium.com/nearprotocol/understanding-rust-lifetimes- ...
- C++ 入门篇
C++基础入门 1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 Visual Studio是我们用来编写 ...
- 如何将项目推到github上面
1.先查看是否安装git. 2.如果没有安装git ,下载之后别忘了配置环境变量.(右击此电脑 --属性--高级系统设置--环境变量--系统变量中的path) 3.推代码 查看状态(可查可不查) gi ...
- NOIP初赛篇——09原码、反码和补码
一.数的原码.补码和反码表示 机器数和真值 在计算机中,表示数值的数字符号只有0和1两个数码,我们规定最高位为符号位,并用0表示正符号,用1表示负符号.这样,机器中的数值和符号全"数码化 ...
- PHP curl爬取数据 加入cookie值
public function get_cookie(){ header("Content-type:text/html;Charset=utf8"); $ch =curl_ini ...
- Mac安装mysqlclient
前言 祝大家身体健康 正文 如何在Mac上安装Python的mysqlclient模块 安装mysql brew install mysql 安装mysql-client brew install m ...
- rocketmq-cpp-client Visual Studio 2019 编译
rocketmq-cpp-client Visual Studio 2019 编译 rocketmq-cpp-client 是rocketmq c++版本的 所以我们C++ 开发者使用此项目 构建 获 ...