原题网址

https://codeforces.com/contest/1492/problem/D

题目大意

给定a,b,k,求x,y使得x和y的二进制表示都恰有a个0和b个1,且不能使用开头的0。另外,还要求x-y的二进制表示恰有k个1。如果不存在x,y输出No,否则输出x和y的二进制表示。

解题思路

此题为构造性问题。

注意到10000-00001=01111(1个1和p个0生成p个1),11110-01111=01111(1个0和p个1生成p个1),我们可以解决该题。

首先若k=0,肯定有解,只要x和y相等即可。

k>0时,若没有0或只有1个及以下的1,肯定无解。因为x和y开头必须是1,剩下的里面必须0和1都有才可能有解。

k>0,有1个以上1且有0时,考虑x=11110000和y=11100010。首先,x把1都放前面,0都放后面;y在x基础上把最右侧1往右移动位置。这样每移动一位,x-y就会多出一个1。最多得到a个1。即k<=a时有解。

若k>a,则最后一个1已经无处可移动了,得到x=11110000和y=11100001。我们还能把最左侧0往左移动位置。这样每移动一位,x-y还会再多出一个1。因为最高位的1不能越过,还有一个1已经在最低位了,这样最多移动b-2次。所以k<=a+b-2时有解。

其他情况无解。

一般情况下想到的都是多少个1后面放多少个0这种直接构造解的方法。但是这题用先构造一个特殊解,然后交换适当位置得到新解的方法更方便。

我的代码

#include <bits/stdc++.h>

using namespace std;

int main() {
int a, b, k;
string x, y;
ios::sync_with_stdio(false);
cin >> a >> b >> k;
if (k > 0 && (a == 0 || b == 1)) {
cout << "No\n";
return 0;
}
for (int i = 0; i < b; ++i) {
x.push_back('1');
y.push_back('1');
}
for (int i = 0; i < a; ++i) {
x.push_back('0');
y.push_back('0');
}
if (k <= a) {
swap(y[b - 1], y[k + b - 1]);
cout << "Yes\n" << x << endl << y;
return 0;
}
if (k <= a + b - 2) {
swap(y[b - 1], y[a + b - 1]);
swap(y[b - 1], y[b - 1 - (k - a)]);
cout << "Yes\n" << x << endl << y;
return 0;
}
cout << "No\n";
return 0;
}

Codeforces 1492D、Genius's Gambit的更多相关文章

  1. CodeForces 22、23部分题解

    CodeForces 22A 找严格第二小的...注意只有一种情况,可以sort排序然后unique输出. int a[N]; int main() { int n; while(~scanf(&qu ...

  2. 第六周周赛——AK机会不易得,好好把握题解(出自HDU5650,codeforces 616A,624A,659A,655A,658A)

    A题: A题题目链接 题目描写叙述: 位运算 TimeLimit:1000MS  MemoryLimit:65536KB 64-bit integer IO format:%I64d Problem ...

  3. Codeforces Round#704 Div2 题解(A,B,C,D,E)

    FST ROUND !!1 A Three swimmers: 直接整除一下向上取整就好了: #include <bits/stdc++.h> using namespace std; t ...

  4. 2017年暑假ACM集训日志

    20170710: hdu1074,hdu1087,hdu1114,hdu1159,hdu1160,hdu1171,hdu1176,hdu1010,hdu1203 20170711: hdu1231, ...

  5. 斯坦福NLP课程 | 第1讲 - NLP介绍与词向量初步

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...

  6. GAMBIT、ICEM、HYPERMESH耦合面的处理方法

    前两天在论坛里碰到有朋友问关于使用fluent仿真流固耦合,使用hypermesh作为前处理时的耦合面的方法,刚好今天有点时间,借此机会总结一下GAMBIT.ICEM和HYPERMESH这三款软件作为 ...

  7. HDU 3333 | Codeforces 703D 树状数组、离散化

    HDU 3333:http://acm.hdu.edu.cn/showproblem.php?pid=3333 这两个题是类似的,都是离线处理查询,对每次查询的区间的右端点进行排序.这里我们需要离散化 ...

  8. codeforces 651C(map、去重)

    题目链接:http://codeforces.com/contest/651/problem/C 思路:结果就是计算同一横坐标.纵坐标上有多少点,再减去可能重复的数量(用map,pair存一下就OK了 ...

  9. Codeforces Round #257 (Div. 1)449A - Jzzhu and Chocolate(贪婪、数学)

    主题链接:http://codeforces.com/problemset/problem/449/A ------------------------------------------------ ...

  10. 主席树[可持久化线段树](hdu 2665 Kth number、SP 10628 Count on a tree、ZOJ 2112 Dynamic Rankings、codeforces 813E Army Creation、codeforces960F:Pathwalks )

    在今天三黑(恶意评分刷上去的那种)两紫的智推中,突然出现了P3834 [模板]可持久化线段树 1(主席树)就突然有了不详的预感2333 果然...然后我gg了!被大佬虐了! hdu 2665 Kth ...

随机推荐

  1. HBase详解(01) - Hbase简介

    HBase简介 定义:HBase是一种分布式.可扩展.支持海量数据存储的NoSQL数据库. 数据模型:逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列.但从HBase的底 ...

  2. 为什么 java 容器推荐使用 ExitOnOutOfMemoryError 而非 HeapDumpOnOutOfMemoryError ?

    前言 好久没写文章了, 今天之所以突然心血来潮, 是因为昨天出现了这样一个情况: 我们公司的某个手机APP后端的用户(customer)微服务出现内存泄露, 导致OutOfMemoryError, 但 ...

  3. [Leetcode]反转字符串中的单词 III

    题目 代码 class Solution { public: string reverseWords(string s) { for(int i=0,j=0;j<=s.size();j++) { ...

  4. Markdown最基础语法内容

    基础常用语法(大多符号后都要跟一个空格) 一.标题 1.使用 # 号可表示 1-6 级标题,一级标题对应一个 # 号,二级标题对应两个 # 号,以此类推. #不要漏了符号和内容之间的空格 一级标题 # ...

  5. 双目测距+点云——使用MiddleBurry数据集的图片

    效果 输入: 左图 右图 输出: 视差图 深度图 实现了鼠标点击图片中的位置,显示其深度. 点云 其他例子点云: bicycle motorcycle 使用自己的双目摄像头拍摄的图片: bottle ...

  6. python利用matplotlib生成迷宫

    起因 我想要写一个项目叫python迷宫游戏,需求是玩家能和机器对抗率先走出迷宫,至少要有两个等级的电脑. 慢慢来,首先迷宫游戏需要有一个迷宫并展示出来,这便是这篇博客的目的 假设迷宫使用0表示点,1 ...

  7. Debian 软件包管理

    Debian 软件包管理 Debian 软件包管理 基础软件包管理知识 sources.list 文件格式 新手建议 档案库临时小故障 软件包依赖关系 APT 进行软件包管理 基本操作 软件包管理操作 ...

  8. 史上最简单 OpenCV for C++ 在 Windows 和 Ubuntu 上编译安装使用教程

    准备工作 原材料 Ubuntu 系统(非必须,Windows 也可以,主要是 Ubuntu 适合编译) OpenCV 3.4.1 压缩包 OpenCV contrib 3.4.1 压缩包 MinGW( ...

  9. 基于AbstractProcessor扩展MapStruct自动生成实体映射工具类

    作者:京东物流 王北永 姚再毅 1 背景 日常开发过程中,尤其在 DDD 过程中,经常遇到 VO/MODEL/PO 等领域模型的相互转换.此时我们会一个字段一个字段进行 set|get 设置.要么使用 ...

  10. 在执行npm install执行报错node-sass

    1 错误信息 这个错误信息不是我当时的报错信息,是网上找的,报错的时候忘记存了,处理好了又找不到错误信息,就从网上找的差不多的错误信息 gyp ERR! configure error gyp ERR ...