Codeforces Round #704 (Div. 2) D. Genius’s Gambit

题意

要求构造出两个不包含前导0的二进制数字 x , y x,y x,y,满足:

  • x , y x,y x,y都具有 a a a个 0 0 0和 b b b个 1 1 1
  • x − y x-y x−y具有 k k k个 1 1 1

限制

a ≥ 0 a\ge 0 a≥0

b ≥ 1 b\ge 1 b≥1

0 ≤ k ≤ a + b ≤ 2 ⋅ 1 0 5 0\le k\le a+b\le 2\cdot 10^5 0≤k≤a+b≤2⋅105

思路

显然的,由于要求 x , y x,y x,y不包含前导 0 0 0,故两数字最高位必定为 1 1 1


特殊讨论 k = 0 k=0 k=0时,根据上述约束,直接输出两个字符串即可

注意先输出 b b b个 1 1 1再输出 a a a个 0 0 0


否则,观察样例,自己多写几个例子,可以发现这个规律

中间位对应都相同时,计算减法可以直接当作 X − X = 0 X-X=0 X−X=0

那么假如这一段的长度为 t t t,减数最高位为 1 1 1,被减数最低位为 1 1 1,其余 t − 1 t-1 t−1个位置均为 0 0 0

那做减法得到的结果即 2 t − 1 − 1 2^{t-1}-1 2t−1−1,其二进制则包含 t − 1 t-1 t−1个 1 1 1


那么只要 k ≠ 0 k\neq 0 k​=0,就需要保证至少要有 2 2 2个 1 1 1与 1 1 1个 0 0 0,且 k ≤ a + b − 2 k\le a+b-2 k≤a+b−2

答案总体可以分成以下三个部分(其中后两个部分位置可以随意调换)

程序

#include<bits/stdc++.h>
using namespace std;void solve()
{int a,b,k;cin>>a>>b>>k;if(k==0){cout<<"Yes\n";for(int i=1;i<=b;i++)cout<<1;for(int i=1;i<=a;i++)cout<<0;cout<<'\n';for(int i=1;i<=b;i++)cout<<1;for(int i=1;i<=a;i++)cout<<0;cout<<'\n';return;}if(a<1||b<2||k>a+b-2){cout<<"No\n";return;}string x="1",y="1";b--;x+='1';y+='0';a--,b--;for(int i=1;i<k;i++){if(a>0){a--;x+='0';y+='0';}else if(b>0){b--;x+='1';y+='1';}}x+='0';y+='1';while(a--){x+='0';y+='0';}while(b--){x+='1';y+='1';}cout<<"Yes\n"<<x<<'\n'<<y<<'\n';
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);solve();return 0;
}

https://www.cnblogs.com/stelayuri/p/14437470.html

Codeforces 1492D - Genius‘s Gambit (构造)相关推荐

  1. Codeforces Round #704 (Div. 2) D. Genius‘s Gambit 构造 + 细节

    传送门 题意: 给a,b,ka,b,ka,b,k,要求用aaa个000和bbb个111组成二进制xxx和yyy,并且x−yx-yx−y恰好有kkk个111,并且xxx和yyy不含前导零. 思路: 首先 ...

  2. D. Genius‘s Gambit 构造题+思维

    题目: https://codeforces.ml/contest/1492/problem/D 题意:用a个0和b个1来构造x和y,使得x - y 的二进制表示1的个数为k. 分析: 构造方法: 1 ...

  3. Codeforces 1276C/1277F Beautiful Rectangle (构造)

    题目链接 http://codeforces.com/contest/1276/problem/C 题解 嗯,比赛结束前3min想到做法然后rush不出来了--比赛结束后又写了15min才过-- 以下 ...

  4. Codeforces 1246D/1225F Tree Factory (构造)

    题目链接 https://codeforces.com/contest/1246/problem/D 题解 首先考虑答案的下界是\(n-1-dep\) (\(dep\)为树的深度,即任何点到根的最大边 ...

  5. CodeForces - 1497D Genius(dp)

    题目链接:点击查看 题目大意:给出 nnn 个问题,每个问题有如下属性: tagtagtag:标签 ccc:困难度 sss:奖励值 初始时 ci=2ic_i=2^ici​=2i,初始时 IQ=0IQ= ...

  6. D. Genius‘s Gambit(很多情况)

    Problem - D - Codeforces 已知三个整数a b k.求两个二进制整数z和y (æ > y)满足1. y都由a个0和b个1组成;2. X - y(也是二进制形式)恰好有k个1 ...

  7. Codeforces 798D Mike and distribution (构造)

    题目链接 http://codeforces.com/contest/798/problem/D 题解 前几天的模拟赛,居然出这种智商题..被打爆了QAQ 这个的话,考虑只有一个序列怎么做,把所有的排 ...

  8. CodeForces - 1332B Composite Coloring(数论+构造)

    题目链接:点击查看 题目大意:给出 n 个合数,每个数不超过 1000 ,现在要求给每个数涂上颜色,使得相同颜色的任意两个数的 gcd 都大于 1 ,现在问在总颜色数不超过 11 种的情况下,构造出一 ...

  9. CodeForces - 1332D Walk on Matrix(构造)

    题目链接:点击查看 题目大意:给出一个错误的dp程序,目的是为了求从点 ( 1 , 1 ) 到点 ( n , m ) 只能向下移动或向右移动,找出一条路径,使得 与运算 的结果最大,给出一个 k ,构 ...

最新文章

  1. Linux那些事儿 之 戏说USB(3)我是一棵树
  2. 虚拟文件系统(VFS)
  3. 皮一皮:钢铁直女?鉴定了,钢的不能再钢!
  4. 关于char[]转换成LPCWSTR的有关问题
  5. cmd中操作数据库的那些常见命令
  6. 31.水平居中总结-不定宽块状元素方法(三)
  7. 数学建模学习笔记(四)——拟合算法
  8. zynq中纯Programmable Loigc编程
  9. ISO27000系列标准
  10. 已知特征多项式求所有对应的二阶矩阵
  11. python 下载qq群文件_利用多线程快速下载腾讯QQ群文件的方法
  12. 叫板SharePoint,多可致力打造满足中国企业需要的文档管理软件
  13. windows计算机锁屏的快捷键是什么,win10锁屏快捷键是什么_win10怎么使用快捷键锁屏...
  14. window10下WSL使用Ubuntu报错: System has not been booted with systemd as init system (PID 1). Can‘t operat
  15. 智慧交通大数据可视化,让城市运营车辆可视、可监、可控
  16. VMware 8.0 安装 FC5 的VMware tools
  17. 水电计算机监控,水电行业的计算机监控系统
  18. [VB]获得RecordSet的记录总数
  19. java显示图片_java显示图片的方法
  20. 尚硅谷 周阳老师 SpringCloud 学习笔记

热门文章

  1. 【JVM】对象存活判定算法、GC算法、STW、GC种类详解
  2. phpcmsv9实现手机端与PC端双模板的方法与详细教程(转)
  3. linux操作系统培训_免费在线技术培训丨SLE201v15 SUSE Linux Enterprise Server 15 管理课程...
  4. 2021卫辉高考成绩查询,卫辉中考成绩查询2021
  5. 操作系统真象还原第一章
  6. PyQt制作二维码生成器
  7. QFileInfo(文件信息)和临时文件
  8. Python使用ffmpeg下载m3u8高清视频
  9. CAD快捷键记不全怎么办?快来自定义CAD快捷键吧!
  10. 12345,教你画好线框图