【无码专区5】01串(大讨论+构造)
因为只有std,没有自我实现,所以是无码专区
主要是为了训练思维能力
solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dls的实现不太一样。
std可能也会带有博主自己的注释。
problem
多组数据,给定 n,mn,mn,m,构造一个 n+mn+mn+m 长度的 01
串。
- 包含 nnn 个 111,mmm 个 000。
- 将这个串看成二进制数后能被 333 整除。
- 没有前导零,即高位第一位必须为 111。
分别输出字典序最大和最小的符合条件的 01
串。不存在就输出 -1
。
T≤100,n,m≤1e5T\le 100,n,m\le 1e5T≤100,n,m≤1e5
我的想法
observation
:二进制相邻两位若都是 111,则这两个位代表的 222 的幂的和一定是 333 的倍数。
证明:2i+2i−1=(2+1)⋅2i−1=3k2^i+2^{i-1}=(2+1)·2^{i-1}=3k2i+2i−1=(2+1)⋅2i−1=3k。
如果 nnn 为偶数。
字典序最大一定是形如
1111...100...000
。字典序最小第一时间肯定会以为是
00...011..11
,但是要求不能出现前导零。所以第一位固定为 111 后,其代表的幂次,2i2^i2i 取模 333 一定是 1/21/21/2。- 如果取模是 111,那么只需要某一位也为 111【2k≡2(mod3)2^k\equiv 2\pmod 32k≡2(mod3)】就又可以凑成倍数。形如
100...0010...0111..1111
。 - 如果取模是 222,那么只需要第一位也为 111就凑成倍数,形如
100..0011..111
。
- 如果取模是 111,那么只需要某一位也为 111【2k≡2(mod3)2^k\equiv 2\pmod 32k≡2(mod3)】就又可以凑成倍数。形如
如果 nnn 为奇数。
字典序最大。
肯定也是前面一堆连续的 111,然后最后面的 333 个数的幂次都是取模为 111。
形如
111..10..01..0100...00
(最前面的连续 111 段长度肯定也是奇数)。字典序最小。
首位是 111 没得跑。肯定也是后面一堆连续的 111,然后最前面的 333 个数的幂次都是取模为 111。
形如
10...00010...010...011111...11
(最后面的连续 111 段长度得是奇数)。
显然,偶数一定是有解的。奇数就不一定了,因为可能 111 个数不够。
solution
简单的讨论。
如果只有一个 111, 或者 111 的个数为奇数, 但 000 的个数不超过 111, 那么无解。
- 只有一个 111, 显然无解。
- 如果 111 的个数为奇数, 000 的个数是 000 个, 那么一定是
1111...111
这样, 无解。 - 如果 111 的个数为奇数, 000 的个数是 111 个, 那么相当于
1111...1111
减去一个 111, 但是 1111...11111111...11111111...1111 模三余 000, 减去一个 111 之后模三不等于 000,所以无解。
如果 nnn 是偶数, 那么最大值一定是 1111000000
这样, 最小值首先放一个 111, 最后放 n−2n-2n−2 个 111,剩下的一个 111 用来和 第一个 111 之间放偶数个 000 保证能被 333 整除。
如果 nnn 是奇数,那么首先放 n−3n-3n−3 个 111,这部分能被 333 整除,然后放 10101
,然后放若干个 000。最小值同理,开头放一个 111,末尾放 n−3n-3n−3 个 111,中间放 101
,保证 1
和 101
中间有奇数个 000,这样前半部分也被整除了。
时间复杂度 O(n)O(n)O(n)。
std
#include <bits/stdc++.h>
using namespace std;string mul(string a, int b) {string c;for (int i = 0; i < b; i++)c += a;return c;
}
string mx, mn;int main() {freopen("binary.in", "r", stdin);freopen("binary.out", "w", stdout);int T;scanf("%d", &T);while (T--) {int n, m;scanf("%d%d", &n, &m);if (n <= 1 || (n % 2 == 1 && m <= 1)) {mx = "-1";mn = "-1";} else {if (n % 2 == 0)mx = mul("1", n) + mul("0", m);elsemx = mul("1", n - 2) + "0101" + mul("0", m - 2);if (n % 2 == 0)mn = "1" + mul("0", m / 2 * 2) + "1" + mul("0", m % 2) + mul("1", n - 2);elsemn = "1" + mul("0", m / 2 * 2 - 1) + "101" + mul("0", m % 2) + mul("1", n - 3);}printf("%s\n%s\n", mx.c_str(), mn.c_str());}
}
【无码专区5】01串(大讨论+构造)相关推荐
- 【无码专区11】异或2(结论 / 推式子 + 哈希hash + 大整数高精度 加减乘除重载考察)
本题已自我实现.但仍归于无码专区 problem 求 ∑i=1n−1i⨁(n−i)\sum_{i=1}^{n-1}i\bigoplus (n-i)∑i=1n−1i⨁(n−i). 20%,n≤1e6; ...
- 【无码专区10】第K大查询(双向链表 /主席树+st表)
已自我实现,但还是归入无码专区序列.哈哈哈哈哈 对于my idea部分,我的每一个想法都实现了,可供参考. problem 给定一个 1∼n1\sim n1∼n 的排列和 kkk,求所有 r−l+1≥ ...
- 【无码专区1】简单路径的第二大边权(启发式合并+最小生成树)
只有std,没有自我实现,所以叫做无码专区 description 给一张无向图,多次询问,每次询问两个点之间所有简单路径(不重复经过点)中边权第二大(不是严格第二大)的权值的最小值. 数据范围:10 ...
- 【无码专区8】三角形二维数点——计数有多少个给定点落在三角形区域内
因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dl ...
- 【无码专区7】括号序列(思维)
因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dl ...
- 【无码专区13】最小公倍数(线段树)
因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 my idea顾名思义,记录了我的整个思维过程,以及自己部分实现细节口胡,还有期望分数 solution才是dls正解,但是因为只 ...
- 【无码专区6】球与盒子(数学线性筛)
因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dl ...
- 【无码专区12】子集和(背包dp)
此题已自我实现,但仍归于无码专区 本题在考场上就过了,所以难度并不高,发现性质即可. problem 有 nnn 个正整数 a1,a2,...,ana_1,a_2,...,a_na1,a2,... ...
- 【无码专区9】序列统计(带权并查集 + 前缀和建边 + dp)
因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dl ...
最新文章
- 激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
- LTE voice centric和data centric
- KeyError: [] not found in axis_高调又有质感,女星最爱的至IN单品原来是它!
- char-embedding是如何输入到模型的
- mysql指数函数_SQL语言参考大全的目录
- javascript运算符_JavaScript中的按位运算符
- UE3 GPU性能和分析
- Redis精进:List的使用和应用场景
- 微信开发者工具构建npm
- linux模拟gps,Android之GPS研究(实战篇二)
- 用excel制作双层饼图_excel双层饼图怎么做
- Word如何让样式库中的样式不添加到自动生成的目录中
- android4能用otg吗,小米4支持OTG吗?小米4手机的OTG功能怎么用?
- css样式的灵异事件
- 编程求E1+E2+…+E100的值​
- 第四章#4.3哈夫曼树以及案例介绍
- 关于NS3中各个WifiRemoteStationManager(二)
- Barracudanbsp;VSnbsp;antelope
- abaqus python实例_abaqus Python实例-操作excel文件
- 摩拜创始人退出,ofo陷困境,哈罗会成为最大受益者么?
热门文章
- 专为小机械迷而造,培养STEM思维,千万别错过!物理机械力学知识边玩边学,5岁以上请入手...
- 5道谷歌面试题:即使是天才也要怀疑自己能力了(附答案)
- 掌握这四点核心思想,统计学才算入门
- python csv文件读取行列_使用Numpy读取CSV文件,并进行行列删除的操作方法
- oracle clob 查询换行,sqoop clob从Oracle导入到hive 回车换行导致记录增多
- 爬取猎聘python_爬取猎聘大数据岗位相关信息--Python
- python将列表的第一列删除_python列表基本操作:索引(访问),切片,扩展,删除,追加,统计,长度,获取下标等...
- 算法设计与分析——动态规划——石子合并问题
- [JavaWeb]web相关概念回顾
- C++vector容器-互换容器