题目

在牛客网,签到的人是有奖励的!!!

对于星期一签到的人会获得 的奖励

对于星期二签到的人会获得 的奖励

······

对于星期天签到的人会获得 的奖励

牛牛签到的这一个月是第 年的第 个月

牛牛忘记了这个月的 1 日是星期几

但是他知道自己签过到的日期

他想知道自己最少可以获得多少奖励

解题思路

对于每月的第 日和第 日,如果 ,则这两日的星期是相同的。

暴力枚举:假设这月的第 1 日是星期一/二/.../六/日,分别计算每月奖励总和,返回最小值。

C++代码

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int a, b;
    int h[7];
    int c;

    cin >> a >> b;
    for(int i=0; i<7; ++i)
        cin >> h[i];
    int k = 0;
    vector<int> week(7,0);
    while(cin >> c){
        if(c==1) week[k]+=1;
        ++k;
        k%=7;
    }

    int ans = 0x3f3f3f3f;
    for(int i=0; i<7; ++i){
        int j = i;
        int sum = 0;
        int t = 0;
        while(t<7){
            sum += h[j]*week[t];
            ++t;
            ++j;
            j%=7;
        }
        ans = min(ans, sum);
    }

    cout << ans << endl;

    return 0;
}