题解 P1664 【每日打卡心情好】
呀,第一个C++题解,来口螃蟹哈。
这道题数据有毒!数据有毒!
真的有毒,n<=1000。于是乎就有了负数
#include<iostream>
using namespace std;
int a[1003];
int fan(int x)
{
int a=1;
for (int i=1;i<=x;i++)
{
a*=2;
}
return a;
}
int main()
{
int n;
int x=0,b=0,s=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int j=1;j<=n;j++)
{
if(a[j]==1)
{
x++;
if (x>=1&&x<3) s=s+1;
if (x>=3&&x<7) s=s+2;
if (x>=7&&x<30) s=s+3;
if (x>=30&&x<120) s=s+4;
if (x>=120&&x<365) s=s+5;
}else b++;
if(a[j+1]==1&&a[j]==0)
{
x=x-fan(b-1);
if(x<0)
{
x=0; //处理这有毒的数据
}
b=0;
}
}
cout<<s;
return 0;
}