• D. Radio Towers(斐波那契+逆元)


    Problem - 1452D - Codeforces

    在一条坐标线上有n+2个城镇,编号从0到n+1。第i个城镇位于第i点。

    你在1,2,......,n个镇上各建一座无线电塔,概率为12(这些事件是独立的)。之后,你想把每个塔的信号功率设置为1到n的某个整数(信号功率不一定相同,但也不一定不同)。位于i镇的信号塔的信号功率为p,可以到达每一个城市c,这样|c-i|

    在建造信号塔后,你要以这样的方式选择信号功率。

    城镇0和n+1没有收到任何无线电塔的信号。
    1,2,...,n镇从每个镇的一个无线电塔获得信号。
    例如,如果n=5,你在2、4、5镇建了塔,你可以把2镇的塔的信号功率设为2,4、5镇的塔的信号功率设为1。 这样,0和n+1镇就不会得到任何塔的信号,1、2、3镇得到2镇塔的信号,4镇得到4镇塔的信号,5镇得到5镇塔的信号。

    计算以下概率:在建造塔台后,你将有办法设置信号功率以满足所有的限制条件。

    输入
    输入的第一行(也是唯一的一行)包含一个整数n(1≤n≤2⋅105)。

    输出
    打印一个整数--有办法设置信号功率以满足所有约束条件的概率,取模为998244353。

    从形式上看,这个概率可以表示为一个不可还原的分数xy。你必须打印x⋅y-1mod998244353的值,其中y-1是一个整数,使y⋅y-1mod998244353=1。

    例子
    输入复制
    2
    outputCopy
    748683265
    输入副本
    3
    输出拷贝
    748683265
    输入副本
    5
    输出拷贝
    842268673
    输入副本
    200000
    输出拷贝
    202370013
    注意
    第一个例子的真实答案是14。

    概率为14,塔楼建在1号和2号镇,所以我们可以把它们的信号功率设为1。
    第二个例子的真实答案是14。

    概率为18,塔楼建在1、2和3镇,所以我们可以把它们的信号功率设为1。
    在概率为18的情况下,只有2号镇有一座塔,我们可以将其信号功率设为2。
    第三个例子的真实答案是532。请注意,即使前面的解释中使用了所有塔的信号功率相等,也不一定如此。例如,如果n=5,塔建在2、4和5镇,你可以把2镇的塔的信号功率设为2,4和5镇的塔的信号功率设为1。

    题解:

    我们看是概率,然后分母是2^n每一个放不放。之后我们看分子。分子式所有可行方案数。
    我们首先可以先将前几种确定:

    n=1
    1只有一种
    n=2
    1 1 也只有一种
    n=3
    0 2 0
    1 1 1 两种
    n=4
    1 1 1 1
    0 2 0 1
    1 0 2 0 三种
    n=5
    1 1 1 1 1
    0 2 0 1 1
    1 1 0 2 0
    0 0 3 0 0
    1 0 2 0 1五种
    通过举例我们就能发现他与斐波那契数列有关。
    (打表真的是一个很重要的思想,有时候没思路可以打表试一试)

    1. #include<iostream>
    2. #include<algorithm>
    3. #include<cstring>
    4. #include<string>
    5. #include<map>
    6. #include<vector>
    7. #include<queue>
    8. using namespace std;
    9. long long n;
    10. int mod = 998244353;
    11. long long a[200050];
    12. long long qpow(long long x,long long y)
    13. {
    14. long long ans = 1;
    15. while(y)
    16. {
    17. if(y&1)
    18. ans = ans*x%mod;
    19. y/=2;
    20. x = x*x%mod;
    21. }
    22. return ans;
    23. }
    24. void solve()
    25. {
    26. cin >> n;
    27. long long ans = qpow(2,n);
    28. ans = qpow(ans,mod-2);
    29. a[1] = 1;
    30. a[2] = 1;
    31. for(int i = 3;i <= n;i++)
    32. {
    33. a[i] = (a[i-1] + a[i-2])%mod;
    34. }
    35. cout<<a[n]*ans%mod;
    36. }
    37. int main()
    38. {
    39. int t = 1;
    40. // cin >> t;
    41. while(t--)
    42. {
    43. solve();
    44. }
    45. }
    46. //10 3 100
    47. //9 3
    48. //6 6
    49. //3

  • 相关阅读:
    关于脑部的基础知识
    《Hierarchical Text-Conditional Image Generation with CLIP Latents》阅读笔记
    vue实现一个鼠标滑动预览视频封面组件
    【计网】传输层
    node.js - http、模块化、npm
    华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker
    关于混音
    微信小程序报request:fail url not in domain list的解决方法
    前端模块化
    防火墙NAT智能选举综合实验
  • 原文地址:https://blog.csdn.net/m0_64158084/article/details/127971121