1 条题解

  • 0
    @ 2025-8-24 22:13:57

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar UnyieldingTrilobite
    直到世界 只剩下闪烁的黑白

    搬运于2025-08-24 22:13:57,当前版本为作者最后更新于2020-02-26 22:41:36,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    upd:修复一个推导错误(结论无误)。

    来讲一种O(1)O(1)算法(可能超出新手范围?)

    动态规划。

    ansians_i表示n=in=i时的答案。

    显然ans1=1ans_1=1(如果不明白······建议重新读题。).

    怎么转移?

    列方程ansi21=ansi1\frac{ans_i}{2}-1=ans_{i-1}.

    解得ansi=2(ansi1+1)ans_i=2(ans_{i-1}+1).

    前方高能。

    归纳ansn=3×2n12ans_n=3\times 2^{n-1}-2.

    n=1n=11=11=1成立。

    n=kn=k时成立,即ansk=3×2k12ans_k=3\times 2^{k-1}-2

    则对于$n=k+1,ans_{k+1}=2(ans_k+1)=2(3\times 2^{k-1}-2+1)=3\times 2^{k}-2$.

    也成立。

    所以对于一切正整数nn均成立。

    所以······程序:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n;
        cin>>n;
        cout<<(1<<n-1)*3-2;
        return 0;
    }
    

    怎么想到?两种方法:

    第一:动态规划打表找规律+归纳。

    第二:把递推公式的ansi1ans_{i-1}继续展开,会得到一串等比数列,求和化简+归纳即可。

    Over.

    • 1

    信息

    ID
    4721
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者