码迷,mamicode.com
首页 > 其他好文 > 详细

[CF1239A] Ivan the Fool and the Probability Theory - 组合数学

时间:2020-03-21 18:09:51      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:const   out   and   数学   isp   namespace   cin   cout   组合数   

给定一个 \(n \times m\) 的方格图,每个格子可以被染成黑色或白色,且与其相邻的格子(上,下,左,右)中至多只有一个与其颜色相同。求方案数。

Solution

依稀记得当年在热身赛上碰到这个题,大家都说是 CF 原题,然后我跪了……

对于 \((i,j)\),如果它左、左上、上的颜色确定,那么这个格子的颜色就确定了

于是我们枚举 \((1,1)\) 的颜色,然后将第一行第一列的颜色确定下来,这时候行列显然相互独立

对于行,答案相当于一个 \(1/2\) 排列划分,对于列同理,于是答案为
\[ 2(F_n+F_m-1) \]

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

#define int long long
const int mod = 1e9+7;

int f[100005];

signed main() {
    int n,m;
    cin>>n>>m;
    f[0]=f[1]=1;
    for(int i=2;i<=max(n,m);i++) f[i]=(f[i-1]+f[i-2])%mod;
    cout<<2*(f[n]+f[m]-1+mod)%mod;
}

[CF1239A] Ivan the Fool and the Probability Theory - 组合数学

标签:const   out   and   数学   isp   namespace   cin   cout   组合数   

原文地址:https://www.cnblogs.com/mollnn/p/12540303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!