CF743B Chloe and the sequence 题解 分治

Posted 劝君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF743B Chloe and the sequence 题解 分治相关的知识,希望对你有一定的参考价值。

题目链接:http://codeforces.com/problemset/problem/743/B

题目大意:

对于一个 n-序列,如果 n==0 ,那么它是一个空的序列(也就是说空序列中没有元素)。

然后会进行 i 次操作,每次操作,会在原序列末尾添加一次原序列,并且在两个原序列之间插入一个值为 i 的元素。

比如:

  • 当 n == 0 时,0-序列为 []
  • 当 n == 1 时,1-序列为 [] + 1 + [] = [ 1 ]
  • 当 n == 2 时,2-序列为 [ 1 ] + 2 + [ 1 ] = [ 1, 2, 1 ]
  • 当 n == 3 时,3-序列为 [ 1, 2, 1 ] + 3 + [ 1, 2, 1 ] = [ 1, 2, 1, 3, 1, 2, 1 ]
  • …………

现在我们的题目要求,给你一个 n-序列,求出它的第 k 个元素。

比如,3-序列 的 第 2 个元素是 2。

解题思路:

分治。一个 n-序列开一看成 一个 n-1-序列 + n + 一个n-1序列。

示例程序:

#include <bits/stdc++.h>
using namespace std;

int cal(int n, long long k) 
    if (k == 1ll << n-1) return n;
    return cal(n-1, k % (1ll << n-1));


int n;
long long k;

int main() 
    cin >> n >> k;
    cout << cal(n, k) << endl;
    return 0;

以上是关于CF743B Chloe and the sequence 题解 分治的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #384 (Div. 2) B. Chloe and the sequence(规律题)

CF 862C Mahmoud and Ehab and the xor(异或)

[CF842C]Ilya And The Tree

CF438D The Child and Sequence

CF 842C Ilya And The Tree(树上DFS)

[CF1250B] The Feast and the Bus - 贪心