扯在前面

本题的英文翻译很有意思,很符合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. java 合并两个list 并去重

    //两个list合并并去除重复 public static void main(String[] args) throws Exception { List list1 =new ArrayList( ...

  2. Liunx运维(七)-用户管理及用户信息查询命令

    文档目录: 一.useradd:创建用户 二.usermod:修改用户信息 三.userdel:删除用户 四.groupadd:创建新的用户组 五.groupdel:删除用户组 六.passwd:修改 ...

  3. Redis 设计与实现 6:五大数据类型之列表

    列表对象有 3 种编码:ziplist.linkedlist.quicklist. ziplist 和 linkedlist 是 3.2 版本之前的编码. quicklist 是 3.2 版本新增的编 ...

  4. java数组之排序

    /** * String排序算法依据<b>词典编排顺序排序</b><br> * 所以大写字母开头的词都放在前面输出,之后才是小写之母开头的词 *@date:2018 ...

  5. psql: could not connect to server: No such file or directory

    postgresql报错: psql: could not connect to server: No such file or directory         Is the server run ...

  6. MODBUS_RTU通信协议

    Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表.Modbus已经成为工业领域通信协议 ...

  7. sparkStreaming实时数据处理的优化方面

    1.并行度 在direct方式下,sparkStreaming的task数量是等于kafka的分区数,kakfa单个分区的一般吞吐量为10M/s 常规设计下:kafka的分区数一般为broken节点的 ...

  8. 申请免费域名并配置DNS解析及CDN加速

    标题: 申请免费域名并配置DNS解析及CDN加速 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#申请,#免费,#域名,#DNS解析,#CDN加速,#子域名] 目录: [网站] 日 ...

  9. Debian10_Centos8_fail2ban

    Debian10_Centos8_fail2ban 转载注明来源: 本文链接 来自osnosn的博客,写于 2020-11-7. Debian-10 的 fail2ban 支持 ipv6.防火墙内核是 ...

  10. Go 的定时任务模块 Cron 使用

    前言 新项目是Golang作为开发语言, 遇到了些新的坑, 也学到了新的知识, 收获颇丰 本章介绍在Go中使用Cron定时任务模块来实现逻辑 正文 在项目中, 我们往往需要定时执行一些逻辑, 举个例子 ...