题解 P1990 【覆盖墙壁】
这是一道明显的递推题
1.样例为13,我们可以先从1开始算
得到:dp[1]=1,dp[2]=2,dp[3]=5,dp[4]=11;
2.(大雾) 这有什么卵用吗
如果不是一些十分明显的规律数列
那就 不用想了 开始瞎搞
经过一系列玄学操作
你就会惊奇的发现 咦?
dp[i]=dp[i-1]*2+dp[i-3]; 这个式子居然过了样例
这样的话,就放心的把它怼上去吧。。。
Code:
#include<bits/stdc++.h>
using namespace std;
int dp[1000009],n;
int main()
{
dp[1]=1;
dp[2]=2;
dp[3]=5;
scanf("%d",&n);
for(int i=4;i<=n;i++)
{
dp[i]=(dp[i-1]*2)%10000+dp[i-3]%10000;
dp[i]%=10000;
}
printf("%d\n",dp[n]);
return 0;
}
希望排版调过之后重审能过!!!谢谢管理员大大!!!