8 条题解
-
1
#include <iostream> using namespace std; long long a[1001],b[1001],c[1001],d[1001],n; int main() { cin>>n; a[1]=1; b[1]=1; for (int i=2;i<=n;i++) { a[i]=(a[i-1]+d[i-1])%1000000007;//有症状=前一天有症状+前一天感染两天 b[i]=a[i]%1000000007;//当天感染=当天有症状 c[i]=b[i-1]%1000000007;//感染一天=前一天的当天被感染 d[i]=c[i-1]%1000000007;//感染两天=前一天的感染一天 } cout<<(a[n]+b[n]+c[n]+d[n])%1000000007; }
-
-1
看到题解里有比我更简单的但是不知道效率怎么样()
也许代码比其他题解复杂但也许更好理解?
平均内存占用400kb以下,耗时1ms。struct Inf{ long long asy,oneDay,twoDay,threeDay; }inf[1002];
搞个结构体然后算就得了,算的过程还要不断取模,不然容易越界,类型要long long
inf[0].asy=1; for(short i=1;i<=n;i++){ inf[i].asy=(inf[i-1].asy+inf[i-1].threeDay)%mod; inf[i].threeDay=inf[i-1].twoDay; inf[i].twoDay=inf[i-1].oneDay; inf[i].oneDay=inf[i].asy; }
最后输出的时候把inf[n]的所有成员相加并且取模就行了。
如果结构体里面的三个Day想用数组代替(比如day[3])的话,编译器必须得C++11及以上才行,98没结构体动态数组这特性,运行会报错。 -
-11
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 1205
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 693
- 已通过
- 233
- 上传者