题解 P1664 【每日打卡心情好】
看标题来拿估值的
顺便连卡242祭
注意事项:
days不能为负,提醒记几,以后写完题都要想特判
貌似,,没惹?
#include <iostream>
using namespace std;
int n,a,days,ex,own;
int add(int day)//根据天数加经验
{
if(day==0)return 0;
if(day < 3)return 1;
if(day < 7)return 2;
if(day < 30)return 3;
if(day < 120)return 4;
if(day < 365)return 5;
return 6;
}
int quickpow(int a,int b)//快速幂板子
{
int ans = 1;
while(b)
{
if(b&1)ans*=a;
a*=a;
b>>=1;
}
return ans;
}
int main()
{
cin>>n;
for(int i = 1 ;i <= n ;i++)
{
cin>>a;
if(a)
{
if(own!=0)days-=quickpow(2,own-1),own = 0,days=days>0?days:0;//days<0,则days为0,
days++;
ex+=add(days);
}
else own++;//连续不打卡的天数
}
cout<<ex;
return 0;
}