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

Problem - 1452D - Codeforces

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

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

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

城镇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五种
通过举例我们就能发现他与斐波那契数列有关。
(打表真的是一个很重要的思想,有时候没思路可以打表试一试)

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<queue>
using namespace std;
long long n;
int mod = 998244353;
long long a[200050];
long long qpow(long long x,long long y)
{
	long long ans = 1;
	while(y)
	{
		if(y&1)
		ans = ans*x%mod;
		y/=2;
		x = x*x%mod;
	}
	return ans;
}
void solve()
{
	cin >> n;
	long long ans = qpow(2,n);
	ans = qpow(ans,mod-2);
	a[1] = 1;
	a[2] = 1;
	for(int i = 3;i <= n;i++)
	{
		a[i] = (a[i-1] + a[i-2])%mod;
	}
	cout<<a[n]*ans%mod;
}
int main()
{
	int t = 1;
//	cin >> t;
	while(t--)
	{
		solve();
	}
}
//10 3  100
//9 3
//6 6
//3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值