题目描述如下
本题比起分享怎么做,更想复盘下比赛心态和技巧的问题,首先先说本题题解
标准的dp板子题,或者题目换一个说法,就是上楼梯问题(或者理解为斐波那契),也是dp思想的入门题。到达第n号格子的方案数,其实也就是到达第n-1号格子的方案数加上n-2号格子的方案数。(因为想到n号只能由n-1或n-2号格子到达)换言之,就是后者状态由前者所决定,经典的状态转移方程,经典的dp,题解如下
但是,再比赛时看见又是对大数据取模输出又感觉是dp下意识直接跳过,实际静下心想想这题根本不难甚至之前学过无数次,这就是比赛打得少,经验问题和心态问题(都怪前缀和那道题endl卡我好久其他题都看得浮光掠影的)总之不要被大数据吓到,特别是题目描述少的题都不会太复杂,以上
ac代码如下
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7;
const int N=1e6+10;
int ans,n;
int dp[N];
signed main(){
cin>>n;
dp[1]=1,dp[2]=1;
for(int i=3;i<=n;i++){
dp[i]=(dp[i-1]+dp[i-2])%mod;
}
cout<<dp[n];
}