扯在前面

本题的英文翻译很有意思,很符合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. mysql 提示 vcruntime140_1.dll丢失

    百度网盘:https://pan.baidu.com/s/1vbVexHs1eRfGlnTbr8U53Q 提取码:59tm 将两个文件同时放到路径:C:\Windows\System32 下,运行ba ...

  2. 实体类转json 和 json转实体类

    1.new JSONObject().toJSONString(rootEntity) JSONObject.toJSONString(specPrices)//specPrices实体类   2. ...

  3. spring mvc与mybatis与maven+mysql框架整合

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  4. React 入门-写个 TodoList 实例

    React 是一个用于构建用户界面的 JavaScript 库,主要特点有: 声明式渲染:设计好数据和视图的关系,数据变化 React 自动渲染,不必亲自操作DOM 组件化:页面切分成多个小部件,通过 ...

  5. PostgreSQL使用MySQL外表(mysql_fdw)

    postgres使用mysql外表 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14223167.html 浅谈 postgres不知不觉已经升到了版本13,记 ...

  6. 当会打王者荣耀的AI学会踢足球,一不小心拿下世界冠军!

    难得的元旦小假期,没有什么比得上在慵懒的冬日艳阳下放松自己,拿起手机,叫上了许久未一起作战的小伙伴,到王者荣耀中激战了一番,仿佛又回到了当年那个年轻的自己. 厉害不,毕竟当年DD也是王者五十星的水平, ...

  7. 改进你的c#代码的5个技巧(二)

    在本文中,我将向你展示c#编程的5个最佳实践.我从日常编程经验中学到了这些实践.我在release模式下测试了所有的代码,并在开发环境稳定后进行了截屏.我想你会喜欢这些建议的. 在使用数据类型之前选择 ...

  8. 4.简单的 GNU 汇编语法

    芯片启动时很多设备没有初始化,需要汇编语言进行准备. 简单的GNU汇编语法: 1 label: instruction @ comment label :标号,类似于外号,为所在位置做标号,可以通过这 ...

  9. Linux服务器初始化调优及安全加固

    一,开启iptables 仅开放必要的SSH端口和监控端口 示例:SSH tcp 22snmpd udp 161nrpe tcp 5666本人公网IP全端口开放 二,除非特别熟悉selinux配置,否 ...

  10. js 鼠标点击页面出现文字

    <script type="text/javascript"> var a_idx = 0; jQuery(document).ready(function($) { ...