D. Genius‘s Gambit(很多情况)
Problem - D - Codeforces
已知三个整数a b k。求两个二进制整数z和y (æ > y)满足1. y都由a个0和b个1组成;2. X - y(也是二进制形式)恰好有k个1。z和y不允许使用前导零。输入唯一的一行包含三个整数a, b和k (0 <a;1 <b;0<k < a+b< 2- 105) -结果中0、1和1的个数。输出如果有可能找到两个合适的整数,打印“Yes”后面跟着以2为基数的z和y。否则打印“No”。如果有多个可能的答案,打印其中任何一个。
Examples
input
Copy
4 2 3
output
Copy
Yes 101000 100001
input
Copy
3 2 1
output
Copy
Yes 10100 10010
input
Copy
3 2 5
output
Copy
No
请注意在第一个例子中,= 1010002 = 25 + 23 = 4010,y = 1000012 = 25 +2°= 3310,4010 - 3310 = 710 = 22 +2 +2°= 1112。因此- y以2为底有3个1。在第二个例子中,= 101002 = 24 + 22 = 2010,y = 100102 = 24 + 2 = 18,2 - y = 20 - 18 = 210 = 102。这是1。在第三个例子中,你可能会发现,答案是不可能找到的。
题解:
题意很容易理解,关键是情况有很多,很难全部找出
首先我们应该知道最多可以构造出来多少个1
应该是a + b - 2个1
如果b >= 2
1100000.0
100000...1
这样肯定是最优的,最开始两位为0,其他全为1,如果有多余的1,填在1,2串相等的位置即可,就可以抵消
所以a+b - 2 < k不成立
但是会有一个特解0 1 0就是成立的
其次如果b = 1,k肯定应该等于0,由于数不能有前导0
还有a = 0,k也肯定等于0,全是1,相减肯定为0
剩下就是一般情况构造即可,思路类似构造最优情况
#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<map>
using namespace std;
int mod = 1e9 + 7;
typedef long long ll;
int x[200050];
int y[200050];
void solve()
{int a,b,k;cin >> a >> b >> k;if(a == 0&&b == 1&&k == 0){cout <<"YES\n1\n1";}else if(k > a + b - 2||(b == 1&&k != 0)||(a == 0&&k != 0)){cout <<"NO\n";}else{cout <<"YES\n";y[1] = 1;x[1] = 1;if(k <= a){for(int i = 2;i <= b;i++)x[i] = 1;for(int i = 2;i <= b - 1;i++){y[i] = 1;}y[b + k] = 1;}else{for(int i = 2;i <= b;i++){x[i] = 1;}for(int i = 2;i <= b;i++){y[i] = 1;}y[a+b] = 1;y[a+b-k] = 0;}for(int i = 1;i <= a+b;i++)cout << x[i];cout <<"\n";for(int i = 1;i <= a+b;i++)cout << y[i];}
}
//3 6 6
//111111000
//110111001
signed main()
{
// ios::sync_with_stdio(0);
// cin.tie(0);cout.tie(0);int t = 1;
// cin >> t;while(t--){solve();}
}
D. Genius‘s Gambit(很多情况)相关推荐
- Codeforces 1492D - Genius‘s Gambit (构造)
Codeforces Round #704 (Div. 2) D. Genius's Gambit 题意 要求构造出两个不包含前导0的二进制数字 x , y x,y x,y,满足: x , y x,y ...
- 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不含前导零. 思路: 首先 ...
- codeforces1492 D. Genius‘s Gambit python
D 越来越觉得就是找规律啦~ 听说这是俄罗斯中小学生比赛- 原来我还是一个孩子呀 真棒 回归记录 题意: 有a个0 b个1 组成X Y使得X-Y的值有K个1 (均为二进制) 思路: 首先 要会二进制加 ...
- D. Genius‘s Gambit 构造题+思维
题目: https://codeforces.ml/contest/1492/problem/D 题意:用a个0和b个1来构造x和y,使得x - y 的二进制表示1的个数为k. 分析: 构造方法: 1 ...
- 存疑598A得根据小数点分很多情况
题目http://codeup.cn/problem.php?cid=100000598&pid=0 难点: 小数点移动和按位相加.科学计数法都是简单的了 #include<cstdio ...
- 移动Web开发图片自适应两种常见情况解决方案
本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...
- word图片自动换行不亮_知网查重时提交pdf检测结果竟然比Word高很多!
近来,很多学生为PDF查重比Word高而烦恼.一般在提前使用知网查重的时候学生都默认提交Word,谁能知道有时候PDF查重率确实高于Word的查重结果.知网查重时提交pdf检测结果竟然比Word高很多 ...
- sql中索引不会被用到的几种情况
转载自 sql中索引不会被用到的几种情况 1.查询谓词没有使用索引的主要边界,换句话说就是select *,可能会导致不走索引. 比如,你查询的是SELECT * FROM T WHERE Y=XX ...
- MySQL 分页优化中的 “ INNER JOIN方式优化分页算法 ” 到底在什么情况下会生效?...
最近无意间看到一个 MySQL 分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的方案.因为现实中很多情况都不是固定不变的,能总结出来通用性的做法或者说是规律,是要考虑非常多的 ...
最新文章
- 腾讯开源图计算框架 Plato:十亿级节点图计算进入分钟级时代
- 【STM32】OLED 显示实验代码详解
- 9000+ 字,彻底征服 Spring AOP ,美滋滋
- webdynpro view navigation - the same as Webclient UI
- div展示html文本,html – 使文本适合div
- HTML文档的三大构成元素,构成基础结课小结 为什么三大构成是设计的基础课程...
- 基于JAVA+SpringBoot+Mybatis+MYSQL的宝妈购母婴用品商城
- hdu1596-find the safest road
- 一、Java语言基础(5)_数组高级——方法参数的值传递机制
- python 调用海康sdk_Qt调用海康SDK实现摄像头视频播放
- 超级计算机app网易,网易有道超级计算器
- 计算机软件可以控制单片机,一个电脑控制单片机通讯程序分享
- ICIP论文结构整理
- [BZOJ5332] [SDOI2018] 旧试题 [BZOJ5276] Skyfall [莫比乌斯反演][三元环计数][std::vector][Cache Miss]
- Windows安全机制---数据执行保护:DEP机制
- XYplorer使用教程
- php错误排查 写入文档,php error_log 错误信息写入文件
- 开关量、数字量、模拟量、脉冲量的区别
- 隐藏自己的Linux内核模块
- T-3.2-把Redis当作消息队列合不合适