Codeforces 1492D、Genius's Gambit
原题网址
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的更多相关文章
- CodeForces 22、23部分题解
CodeForces 22A 找严格第二小的...注意只有一种情况,可以sort排序然后unique输出. int a[N]; int main() { int n; while(~scanf(&qu ...
- 第六周周赛——AK机会不易得,好好把握题解(出自HDU5650,codeforces 616A,624A,659A,655A,658A)
A题: A题题目链接 题目描写叙述: 位运算 TimeLimit:1000MS MemoryLimit:65536KB 64-bit integer IO format:%I64d Problem ...
- Codeforces Round#704 Div2 题解(A,B,C,D,E)
FST ROUND !!1 A Three swimmers: 直接整除一下向上取整就好了: #include <bits/stdc++.h> using namespace std; t ...
- 2017年暑假ACM集训日志
20170710: hdu1074,hdu1087,hdu1114,hdu1159,hdu1160,hdu1171,hdu1176,hdu1010,hdu1203 20170711: hdu1231, ...
- 斯坦福NLP课程 | 第1讲 - NLP介绍与词向量初步
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- GAMBIT、ICEM、HYPERMESH耦合面的处理方法
前两天在论坛里碰到有朋友问关于使用fluent仿真流固耦合,使用hypermesh作为前处理时的耦合面的方法,刚好今天有点时间,借此机会总结一下GAMBIT.ICEM和HYPERMESH这三款软件作为 ...
- HDU 3333 | Codeforces 703D 树状数组、离散化
HDU 3333:http://acm.hdu.edu.cn/showproblem.php?pid=3333 这两个题是类似的,都是离线处理查询,对每次查询的区间的右端点进行排序.这里我们需要离散化 ...
- codeforces 651C(map、去重)
题目链接:http://codeforces.com/contest/651/problem/C 思路:结果就是计算同一横坐标.纵坐标上有多少点,再减去可能重复的数量(用map,pair存一下就OK了 ...
- Codeforces Round #257 (Div. 1)449A - Jzzhu and Chocolate(贪婪、数学)
主题链接:http://codeforces.com/problemset/problem/449/A ------------------------------------------------ ...
- 主席树[可持久化线段树](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 ...
随机推荐
- HBase详解(01) - Hbase简介
HBase简介 定义:HBase是一种分布式.可扩展.支持海量数据存储的NoSQL数据库. 数据模型:逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列.但从HBase的底 ...
- 为什么 java 容器推荐使用 ExitOnOutOfMemoryError 而非 HeapDumpOnOutOfMemoryError ?
前言 好久没写文章了, 今天之所以突然心血来潮, 是因为昨天出现了这样一个情况: 我们公司的某个手机APP后端的用户(customer)微服务出现内存泄露, 导致OutOfMemoryError, 但 ...
- [Leetcode]反转字符串中的单词 III
题目 代码 class Solution { public: string reverseWords(string s) { for(int i=0,j=0;j<=s.size();j++) { ...
- Markdown最基础语法内容
基础常用语法(大多符号后都要跟一个空格) 一.标题 1.使用 # 号可表示 1-6 级标题,一级标题对应一个 # 号,二级标题对应两个 # 号,以此类推. #不要漏了符号和内容之间的空格 一级标题 # ...
- 双目测距+点云——使用MiddleBurry数据集的图片
效果 输入: 左图 右图 输出: 视差图 深度图 实现了鼠标点击图片中的位置,显示其深度. 点云 其他例子点云: bicycle motorcycle 使用自己的双目摄像头拍摄的图片: bottle ...
- python利用matplotlib生成迷宫
起因 我想要写一个项目叫python迷宫游戏,需求是玩家能和机器对抗率先走出迷宫,至少要有两个等级的电脑. 慢慢来,首先迷宫游戏需要有一个迷宫并展示出来,这便是这篇博客的目的 假设迷宫使用0表示点,1 ...
- Debian 软件包管理
Debian 软件包管理 Debian 软件包管理 基础软件包管理知识 sources.list 文件格式 新手建议 档案库临时小故障 软件包依赖关系 APT 进行软件包管理 基本操作 软件包管理操作 ...
- 史上最简单 OpenCV for C++ 在 Windows 和 Ubuntu 上编译安装使用教程
准备工作 原材料 Ubuntu 系统(非必须,Windows 也可以,主要是 Ubuntu 适合编译) OpenCV 3.4.1 压缩包 OpenCV contrib 3.4.1 压缩包 MinGW( ...
- 基于AbstractProcessor扩展MapStruct自动生成实体映射工具类
作者:京东物流 王北永 姚再毅 1 背景 日常开发过程中,尤其在 DDD 过程中,经常遇到 VO/MODEL/PO 等领域模型的相互转换.此时我们会一个字段一个字段进行 set|get 设置.要么使用 ...
- 在执行npm install执行报错node-sass
1 错误信息 这个错误信息不是我当时的报错信息,是网上找的,报错的时候忘记存了,处理好了又找不到错误信息,就从网上找的差不多的错误信息 gyp ERR! configure error gyp ERR ...