为了方便,先将$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. Python标准库模块之heapq – 堆构造

    Python标准库模块之heapq – 堆构造 读前福利:几百本经典书籍https://www.johngo689.com/2158/ 原文链接:https://www.johngo689.com/2 ...

  2. Vulnhub实战-doubletrouble靶机👻

    Vulnhub实战-doubletrouble靶机 靶机下载地址:https://www.vulnhub.com/entry/doubletrouble-1,743/ 下载页面的ova格式文件导入vm ...

  3. ansible远程运维操作

    1.command 用于查看文件内容,查看磁盘,内存,启动命令等纯命令信息 ansible portal -m command -a "cat /test1/test"2.ping ...

  4. 试题 算法训练 区间k大数查询 java题解

    资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正 ...

  5. CORS+XSS的漏洞利用payload

    之前有人问我有没有CORS+XSS的利用姿势,翻了一下国内貌似都没有利用姿势于是就写了这篇文章!!! 首先找到一个反射xss,然后使用xss加载javascript代码达到跨域劫持目的payload如 ...

  6. [转载]CSS3实现文本垂直排列

    最近的一个项目中要使文字垂直排列,也就是运用了CSS的writing-mode属性. writing-mode最初时ie中支持的一个属性,后来在CSS3中增添了这一新的属性,所以在ie中和其他浏览器中 ...

  7. 【UE4 C++】资源烘焙与UE4Editor.exe启动

    资源烘焙 虚幻引擎以内部使用的特定格式存储内容资源,将内容从内部格式转换为特定于平台的格式的过程 称为 烘焙((Cooking) 从编辑器烘焙资源 FIle → Cook Content for Wi ...

  8. airtext初始化(一)

  9. 谈谈BEM规范(含代码)

    css规范之BEM规范 前言 引用一句经典名言在编程的世界里其中一件最难的事情就是命名,不管是设计到编程语言还是标记语言都会有命名的需求.今天聊的就是关于css的命名规范的发展过程以及演变. 命名的发 ...

  10. 使用jave2实现将wav格式的音频转换成mp3格式

    最近需要用到语音合成功能,网上查阅了一番,发现可以使用腾讯云的语音合成API来完成这个功能,但是腾讯云的api返回的是wav格式的音频文件,这个格式的文件有些不通用,因此需要转换成mp3格式的文件. ...