社区讨论

怎么优化?

学术版参与者 5已保存回复 25

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
23 条
当前快照
1 份
快照标识符
@m4wlta3z
此快照首次捕获于
2024/12/20 18:24
去年
此快照最后确认于
2025/11/05 01:23
4 个月前
查看原帖
天花板人物 时间限制:1000ms 空间限制:256M 题目描述 某一天,校长花高价把毕业多年的小 Z 请回来,想见识一下这位能触及学校天花板的人物将会如何改变 校园。 现已知学校的天花板可近似看成 3 * n的长方形,小 Z 的粉刷工具每次可以粉刷 1 * 3 的区域,可以竖 着或者横着粉刷。由于材料有限,粉刷过的区域不会重复粉刷。请你帮校长算一下小 Z 最后粉刷出来的 天花板可能有几种不一样的方案。由于方案数可能很大,输出它模 10^9+7的余数即可。 注意:小 Z 在粉刷的时候必须完全刷满整个天花板,并且每一个小方格不能被重复刷 2 次
样例 #1
样例输入 #1
3
样例输出 #1
2
对于 100%的数据,1<=n<=200000
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
const long long Mod=1000000007;
long long dg(int m){
    if(m<1) return 0; 
    else if(m==1||m==2||m==3) return 1;
         else if(m==3) return 2;
    return ((dg(m-1)+dg(m-3))%Mod);
}
int main()
{
	//freopen("pofhs.in","r",stdin);
	//freopen("pofhs.out","w",stdout);
	scanf("%d",&n);
	cout<<printf("%ll",dg(n));
	return 0;
}

回复

25 条回复,欢迎继续交流。

正在加载回复...