为了方便,先将$n$减小1,即两者范围分别为$[0,n]$和$[m,m+n]$

结论:取$u=\min_{i\in [m,m+n],n\& i=n}i$,则$\forall 0\le i\le u-m,(n-i)\&(u-i)=n-i$

证明分为两点:1.$u$的存在性;2.后者成立

关于$u$的存在性(题目描述中已经保证),取$2^{k-1}\le n<2^{k}$且$n$二进制下即恰有$k$位(无前导0),并再假设这$k$位中有$t$个0,显然$n\ge 2^{k}-2^{t}$(即最低的$t$位为0)

再考虑任意连续$2^{k}$个非负整数中,总存在$2^{t}$个数$i$满足$n\& i=n$(这些数最低的$k$位恰包含所有情况),进而对于任意连续$n+1$个数,即至多去掉了$2^{t}-1$个数,必然留下一个数$i$满足$n\& i=n$

关于后者,取最小的$k$满足$u$在二进制下第$k$位为1而$n$为0,假设$u$在二进制下最低的$k-1$位的值为$u'$,那么当$i\le u'$时有$(n-i)\&(u-i)=n-i$(仅有最低的$k-1$位发生变化,而两者这$k-1$位完全相同)

因此,结论不成立的必要条件为$u'+1\le u-m$,此时考虑$u-(u'+1)$,其也满足$u$的性质且更小,那么即与$u$的最小性矛盾

由此,将这些依次匹配后,即从$(n,m)$变为$(n-(u-m)-1,u+1)$的子问题,重复此过程即可

注意到每一次找到$u$过程中的数都会被匹配,因此暴力找$u$即可

时间复杂度为$o(n)$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int n,m;
4 void calc(int n,int m){
5 for(int i=m;i<=m+n;i++)
6 if ((n&i)==n){
7 for(int j=0;j<=i-m;j++)printf("%d %d\n",n-j,i-j);
8 calc(n-(i-m)-1,i+1);
9 break;
10 }
11 }
12 int main(){
13 scanf("%d%d",&n,&m);
14 calc(n-1,m);
15 return 0;
16 }

[luogu7207]Sob的更多相关文章

  1. 财务模块多组织,GL, SLA, SOB, COA, BSV, CCID, LE 概念的简单介绍

     GL=  General Ledger 指的是Oracle 的总帐系统. application_id = 101. 在uk似乎居然还有不同的解释(In the UK, it was refer ...

  2. gcc 编译两个so其中soA依赖soB

    有两个so,其中soB中调用soA: 那么我们打包soB的时候连接soA: 在打包test程序的时候连接soB,此时soB会自动查找依赖的soA: 如下测试 在编译之前指定环境变量:export LD ...

  3. Socket通信编程实例(SIB和SS'SOB)

    客户端: package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  4. linux下的常用命令

    1 fg切换前后台作业 将后台作业转换为前台作业,”fg %作业号“ 2 stty改变和打印终端行设置 tostop 阻止后台作业写终端,stty -a显示终端的所有选项 3 uname查看机子信息 ...

  5. docker核心原理

    容器概念. docker是一种容器,应用沙箱机制实现虚拟化.能在一台宿主机里面独立多个虚拟环境,互不影响.在这个容器里面可以运行着我饿们的业务,输入输出.可以和宿主机交互. 使用方法. 拉取镜像 do ...

  6. Linux indent

    一.简介 indent可辨识C的原始代码文件,并加以格式化,以方便程序设计师阅读. 二.选项 http://www.runoob.com/linux/linux-comm-indent.html 三. ...

  7. Linux-001-nmon系统性能监控工具的使用及报表产出

    在进行性能测试的时候,需要获取服务器的各项指标,例如 CPU.MEM.I/O.DISK 等.网上有很多的监控工具,nmon 就是其中的一个,其可与 JMeter结合使用,测试系统的性能.其概要的介绍, ...

  8. Redis集群~StackExchange.redis连接Twemproxy代理服务器

    回到目录 本文是Redis集群系列的一篇文章,主要介绍使用StackExchange.Redis进行Twemproxy(文中简称TW)代理服务的连接过程,事务上,对于TW来说,我们需要理解一下它的物理 ...

  9. python 学习笔记十二 CSS基础(进阶篇)

    1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...

随机推荐

  1. 小白自制Linux开发板 三. Linux内核与文件系统移植

    上一篇完成了uboot的移植,但是想要愉快的在开发板上玩耍还需要移植Linux内核和文件系统. 1.Linux内核 事实上对于F1C100S/F1C200S,Linux官方源码已经对licheepi ...

  2. Windows用cmd编译运行C程序

    在Windows环境下用命令行编译运行程序 浙江大学-C语言程序设计进阶 配置gcc 准备一个Dev-cpp 找到gcc.exe所在目录 Dev-Cpp\MinGW64\bin 地址栏右键将地址复制为 ...

  3. 2021-2022 20211420 《信息安全专业导论》安装Linux操作系统并学习Linux基础

    作业信息 |作业属于|https://edu.cnblogs.com/campus/besti/2021-2022-1fois |作业要求|https://edu.cnblogs.com/campus ...

  4. Vulnhub实战-FALL靶机👻

    Vulnhub实战-FULL靶机 下载地址:http://www.vulnhub.com/entry/digitalworldlocal-fall,726/ 1.描述 通过描述我们可以知道这个靶机枚举 ...

  5. 改善深层神经网络-week1编程题(Initializaion)

    Initialization 如何选择初始化方式,不同的初始化会导致不同的结果 好的初始化方式: 加速梯度下降的收敛(Speed up the convergence of gradient desc ...

  6. Java:NIO 学习笔记-2

    Java:NIO 学习笔记-2 上一篇 NIO 学习笔记-1 看了 尚硅谷 的相应教程,此处又对比看了 黑马程序员 的课程 JAVA通信架构I/O模式,做了相应的笔记 前言 在 Java 的软件设计开 ...

  7. Manjaro / ArchLinux 安装网易云音乐解决搜索不能输入中文方法

    0. 安装网易云音乐 yay -S netease-cloud-music 1.先安装qcef这个软件包. sudo yay -S qcef 2.编辑/opt/netease/netease-clou ...

  8. (六)、Docker 之 Dockerfile

    1.什么是Dockerfile Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 2.Dockerfile解析过程 前提认知: 每条保留字指令都必须为大写字母 ...

  9. linux下命令拼接

    前言:我个five,一道特别简单的拼接题没有做出来,我吐了,不过也是涨知识了 直接切入正题了 linux命令是可以拼接的,也就是说在一个system("???")下我们的???可以 ...

  10. geos编译问题

    gdal编译geos的时候会用到geos_c_i.lib这个文件,我用cmake编译的时候仅仅产生geos_c.lib这个文件,所以只能使用nmake的编译方式来编译geos库,nmake编译geos ...