扯在前面

本题的英文翻译很有意思,很符合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的个数而不是具体排列方式)

那我们就找规律,做法如下:

  1. 我们可以选择构造01和011序列来把总序列拼出来;
  2. 当m=2n时,我们就可以愉快的输出n个011,同理,当m=n时,我们也可以愉快的输出n个01;
  3. 如果情况并不是正好怎么办,因为无解的情况已经判断完,所以我们手中的情况保证有解,所以如果多了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的更多相关文章

随机推荐

  1. [leetcode]200. Number of Islands岛屿数量

    dfs的第一题 被边界和0包围的1才是岛屿,问题就是分理出连续的1 思路是遍历数组数岛屿,dfs四个方向,遇到1后把周围连续的1置零,代表一个岛屿. /* 思路是:遍历二维数组,遇到1就把周围连续的1 ...

  2. [leetcode]49. Group Anagrams重排列字符串分组

    是之前的重排列字符串的延伸,判断是重排列后存到HashMap中进行分组 这种HashMap进行分组的方式很常用 public List<List<String>> groupA ...

  3. saltstack批量管理文件和计划任务

    简介 saltstack是由thomas Hatch于创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统.用来管理你的基础架构,可轻松管理成千上万台服务器. 关于saltstack更多功能本 ...

  4. eclipse中把spring源码关联至当前工程

    1.下载并导入spring的相关jar包下载对应版本的spring 2.在当前工程中,选择Referenced Libraries,展开后,选择相应的jar包,右击并选择Properties 3. 在 ...

  5. PPT 转 word

    可以wps  直接转 打开wps   在页面里直接点击右键  可以导出wps

  6. 大数据专栏 - 基础1 Hadoop安装配置

    Hadoop安装配置 环境 1, JDK8 --> 位置: /opt/jdk8 2, Hadoop2.10: --> 位置: /opt/bigdata/hadoop210 3, CentO ...

  7. 微信开发所需要的的方法(签名认证、数组转字符串方法、将xml字符串转换为数组、发送xml请求方法)

    //将xml字符串转换为数组 public function xmlToArray($xml){ $array_data = json_decode(json_encode(simplexml_loa ...

  8. 【Flutter】容器类组件之Scaffold、TabBar、底部导航

    前言 一个完整的路由页可能会包含导航栏.抽屉菜单(Drawer)以及底部Tab导航菜单等.Flutter Material组件库提供了一些现成的组件来减少开发任务.Scaffold是一个路由页的骨架, ...

  9. Vim 自动添加脚本头部信息

    每次写脚本还在为忘记添加头部信息啥的烦恼? 按照下面这么做,帮你减轻点烦恼. # 打开配置文件: vim /root/.vimrc # 添加如下信息: autocmd BufNewFile *.sh ...

  10. 使用NIM Server网络半自动安装AIX系统

    一.NIM配置 1.安装NIMServer前准备 1.1.配置IP地址 # ifconfig –a #检查当前IP地址# # smitty mktcpip #设置IP地址# 选择第一块网卡(插网线的网 ...