此题是一道比噶家还简单的模拟题

思路:

首先要说明一下连续签到天数才会累加,开始我就因为这个而爆零。

输入 $v$ 时不用 $v{1},v{3},v{7}$ 地输,直接 $v{i}$ 就可以,不要被邪恶的出题人迷惑了双眼。

及时你签到时时连续签到天数不是 $3$、$7$、$30$、$120$、$365$ 但大于最低界限,也可以加活跃值(像 $day\ge 1 \ and \ day< 3$ 这样也会加连续签到1天的活跃值)。

然后……

直接模拟即可。

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<bits/stdc++.h>
using namespace std;
int n,v[1145141],c,hyz;//c是连续签到的天数,hyz是活跃值
bool f[1145141];
int main(){
cin>>n;
for(int i=1;i<=6;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
cin>>f[i];
if(f[i]==1)
c++;
else c=0;//如果这天没签到,连续签到中断
if(c>=1&&c<3)
hyz+=v[1];
else if(c>=3&&c<7)
hyz+=v[2];
else if(c>=7&&c<30)
hyz+=v[3];
else if(c>=30&&c<120)
hyz+=v[4];
else if(c>=120&&c<365)
hyz+=v[5];
else if(c>=365)
hyz+=v[6];
}
cout<<hyz;
return 0;//完结撒花
}