这道题跟CSP/S 2019 D1T1有点像。

我们先来模拟一下 \(n=4\) 的情况,

不难得出,最后的衣架挂钩顺序:

下标:  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
顺序: 1 9 5 13 3 11 7 15 2 10 6 14 4 12 8 16

我们发现,得到的顺序构成的序列中左半部分全是奇数,右半部分全是偶数。我们把它分开:

1 9 5 13 3 11 7 15
2 10 6 14 4 12 8 16

奇数部分每个数 \(+1\) 再 \(\div 2\),偶数部分每个数 \(\div 2\),可以得到:

1 5 3 7 2 6 4 8
1 5 3 7 2 6 4 8

我们惊喜地发现,上下部分变得一样了!不仅如此,这还恰巧是 \(n=3\) 的情况!

所以,我们自然而然想到递归。

如果深度已经是 \(n-1\) 了,直接将答案加上当前序号;(第一层深度为\(0\))

如果当前序号为奇数,即在左半部分,则把它 \(+1\) 再 \(\div 2\),继续递归;

如果当前序号为偶数,即在右半部分,则把它 \(\div 2\),同时答案加上 \(2^{n-depth-1}\)(左半部分的长度),继续递归。

时间复杂度\(O(nlogn)\),当然你预处理幂的话就是\(O(n)\)了。

\(Code:\)(极为精简的代码)

#include <bits/stdc++.h>
#define int long long
int n,k,MOD=1e9+7;
int qpow(int x,int y){ //快速幂
int res=1;
while(y){
if(y&1) res=(res*x)%MOD;
x=(x*x)%MOD;y>>=1;
}
return res;
}
int dfs(int x,int dep) {
//我这里深度是从1开始算的,所以下面调用快速幂时略有不同
return dep==n?x:(x%2?dfs((x+1)/2,dep+1):(dfs(x/2,dep+1)+qpow(2,n-dep))%MOD);
}
signed main(){
std::cin>>n>>k;std::cout<<dfs(k,1)%MOD<<std::endl;
return 0;
}

点个赞再走吧!

【Luogu】P6232 [eJOI2019]挂架 题解的更多相关文章

  1. 【luogu P5022 旅行】 题解

    题目连接:https://www.luogu.org/problemnew/show/P5022 \(NOIP2018 DAY2T1\) 考场上只写了60分,很容易想到当 m = n - 1 时的树的 ...

  2. 【luogu P2831 愤怒的小鸟】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2831 写点做题总结:dp,搜索,重在设计状态,状态设的好,转移起来也方便. 对于一条抛物线,三点确定.(0, ...

  3. 【luogu P2827 蚯蚓】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2827 35分:暴力sortO(mnlogn). 80分:考虑到每次不好维护不被切的点+q,正难则反.改成维护 ...

  4. 【luogu P3959 宝藏】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3959 我只是心血来潮想学SA(考场上骗分总行吧). 这个题可以状压DP.爆搜+剪枝.有意思的还是随机化搜索( ...

  5. 【luogu P3410 拍照】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3410 这个题就是求一个最大权闭合图 在一个图中,一些点构成一个集合,且集合中的出边指向的终点也在这个集合中, ...

  6. 【luogu P1113 杂务】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1113 菜 #include <queue> #include <cstdio> #i ...

  7. 【luogu P4114 Qtree1】 题解

    题目链接:https://www.luogu.org/problemnew/show/P4114 1.把边权转化到点权:选取连接这条边的两个点中较深的一个. 2.查询点到点之间的边权时,要从seg[x ...

  8. 【luogu P3979 遥远的国度】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3979 除了换根操作都是裸的树剖 所以换根时考虑: 1.我查询的根等于换的根:无影响 2.我查询的根是换的根的 ...

  9. 【luogu P2169 正则表达式】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2169 tarjan缩点 + SPFA 缩完点之后加边注意别写错. 也可以不用建两个图,可以在一张图上判断是否 ...

随机推荐

  1. LeetCode刷题总结-数学篇

    本文总结LeetCode上有数学类的算法题,推荐刷题总数为40道.具体考点分析如下图: 1.基本运算问题 题号:29. 两数相除,难度中等 题号:166. 分数到小数,难度中等 题号:372. 超级次 ...

  2. CF149D Coloring Brackets

    CF149D Coloring Brackets Link 题面: 给出一个配对的括号序列(如"\((())()\)"."\(()\)"等, "\() ...

  3. 一键安装PyCharm

    1.准备阶段,首先去官网下载:https://download.jetbrains.8686c.com/python/pycharm-professional-2019.1.exe 官网地址:http ...

  4. mac常用指令

    mkdir demo //创建一个文件夹 touch index.html // 创建一个html文件 rm rouch index.html //删除找个index.html文件 rmdir dem ...

  5. Doug Lea在J.U.C包里面写的BUG又被网友发现了

    这是why的第 69 篇原创文章 BUG描述 一个编号为 8073704 的 JDK BUG,将串联起我的这篇文章. 也就是下面的这个链接. https://bugs.openjdk.java.net ...

  6. CRUD,分页,排序,搜索与AngularJS在MVC

    下载source - 53.1 MB 介绍 在选择最新的技术时,有几个因素会起作用,包括这些技术将如何与我们的项目集成.这篇文章解决了开始使用AngularJS和MVC的乞丐的问题.这篇文章告诉使用语 ...

  7. Golang是如何操作excel的?

    关键术语介绍 为了方便开源库的快速上手,我们先来了解 excel 中的几个关键术语,如下图所示,①为sheet,也就是表格中的页签:②为row,代表 excel 中的一行:③为cell,代表 exce ...

  8. 多测师讲解 _接口自动化框架设计分层思想(001)_高级讲师肖sir

    第一层: 第二层:调用接口层 VOQGWBZYNBOAVZGE

  9. Jenkins环境搭建(7)-集成钉钉消息推送

    在去年的时候,搭建了一套Jenkins环境,基本功能已实现,可以通过如下地址查阅. Jenkins环境搭建(1)-下载与安装 Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动 ...

  10. beego log

    package main import ( "github.com/astaxie/beego/logs" _ "xcms/routers" _ "x ...