#include <bits/stdc++.h>
using namespace std;
int v[375];
int main()
{
long long n,sum=0,t=0;
cin>>n;
cin>>v[1]>>v[3]>>v[7]>>v[30]>>v[120]>>v[365];
for(int i=2;i<=364;i++)
{
if(v[i]==0) v[i]=v[i-1];
}
for(int i=1;i<=n;i++)
{
int q;
cin>>q;
if(q==1)
{
t++;
if(t>365) sum+=365;
else sum+=v[t];
}
else t=0;
}
cout<<sum;
return 0;
}
如果t大于365,sum应该加上v[365],而不是365
这道题目,我们要在数组中插入目标值,无非是这四种情况
这四种情况确认清楚了,我们就可以尝试解题了
暴力解法思路很直接,就是for循环遍历一下,时间复杂度是O(n)
既然暴力解法的时间复杂度是On,我们就要尝试一下使用二分查找法。