zoukankan      html  css  js  c++  java
  • Codeforces Round #594 (Div. 2) B C

    题目链接:https://codeforces.com/contest/1248/problem/C

    赛后补的,已经有很详细的题解了,这里只作一个记录。

    每相邻两行只可能完全相同或者完全不同,而每一行只有1010101010……和01010101010……是没有连续相邻的(有连续相邻的下一行只能完全不同,即有连续相邻的从第一行开始后面的就已经固定了),n=1时答案是递推数列,F[n] = F[n-1] + F[n-2]。当第一行为10101010……或0101010101时每一行只有两种状态,此时可以把两种状态看成0和1,即和n=1时的算法是一样的,答案就是F[n]-2+F[m]。

    代码如下:

    #include<bits/stdc++.h>
    #include<vector>
    #include<map>
    #include<queue>
    #define LL long long
    #define INF 0x3f3f3f3f
    #define MOD 1000000007
    using namespace std;
    LL Fib[200005];
    int main()
    {
        LL n, m, q, ans;
        scanf("%lld%lld", &n, &m);
        Fib[1] = 2;
        Fib[2] = 4;
        LL t = max(m,n);
        for(int i = 3;i <= t;i++)
            Fib[i] = (Fib[i-1]%MOD + Fib[i-2]%MOD)%MOD;
        ans = (Fib[n]%MOD + Fib[m]%MOD - 2)%MOD;
        printf("%lld
    ", ans);
        return 0;
    }
  • 相关阅读:
    Django之模板
    Web框架的原理
    mysql 索引
    pymysql模块的使用
    MySQl创建用户和授权
    php去除h5标签
    phpcms_完整版
    快速上手Linux 玩转典型应用_慕课网笔记
    php 微擎
    二维码接口
  • 原文地址:https://www.cnblogs.com/Mamba0Z/p/11715786.html
Copyright © 2011-2022 走看看