列表

详情


NC214571. 牛牛的签到奖励

描述

牛牛在牛客网划水一个月辣!!!

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

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

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

······

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

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

这一个月的天数计算公式为

每年一月 31 天、 二月 28 天或 29 天、三月 31 天、四月 30 天、五月 31 天、六月 30 天、七月 31 天、八月 31 天、九月 30 天、十月 31 天、十一月 30 天、十二月 31 天。其中,闰年的二月为 29 天,平年为 28 天。当年份是 400 的倍数,或日期年份是 4 的倍数但不是 100 的倍数时,该年为闰年。

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

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

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

输入描述

第一行两个数 a,b
第二行七个数 h_1h_2h_3···h_7
第三行若干个数,数的多少是本月的天数
第三行第i个数 c_i
  表示这个月第i天签了到
  表示这个月第i天没有签到

输出描述

输出牛牛最少可以获得的奖励

示例1

输入:

2791 9
195 316 943 249 716 476 681
0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 1

输出:

7071

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 7ms, 内存消耗: 416K, 提交时间: 2021-01-23 18:22:50

#include<stdio.h>
long long sum;
int main(){
	long long a,b;
	scanf("%lld %lld",&a,&b);
	long long h[7];
	for(int i=0;i<7;i++){
		scanf("%lld",&h[i]);
	}
	long long min=31000000;
	char d[100];
	getchar();
	gets(d); 
	for(int i=0;i<8;i++){
		for(int j=0,k=i;d[j];j+=2,k++){
            if(d[j]=='1')
			sum+=h[k%7];
		}
		if(sum<min)
		min=sum;
		sum=0;
	}
	printf("%lld",min);
} 

C++(clang++11) 解法, 执行用时: 6ms, 内存消耗: 504K, 提交时间: 2021-01-22 21:15:53

#include<iostream>
using namespace std;
int main()
{
	int n,m,ct=0,sum=0,sb,min=1000000;
	int a[40],b[8];
	cin>>n>>m;
	for(int i=0;i<7;i++)
	cin>>b[i];
	while(cin>>sb)
	{
		a[++ct]=sb;
	}
	for(int j=0;j<=6;j++)
	{
		sum=0;
		for(int i=1;i<=ct;i++)
		{
			if(a[i])
			sum+=b[(i+j)%7];
		}
		if(sum<min)
		min=sum;
	}
	cout<<min;
}

Python3 解法, 执行用时: 44ms, 内存消耗: 4708K, 提交时间: 2023-05-24 16:59:24

a,b=map(int ,input().split(" "))
h=input().split(" ")
c=[int (x) for x in input().split(" ")]
d=[]
for i in range(7):
    j=i
    sum=0
    for k in c:
        j=j%7
        if k==1:
            sum+=int(h[j])
        j+=1
    d.append(sum)
print(min(d))

pypy3(pypy3.6.1) 解法, 执行用时: 47ms, 内存消耗: 18696K, 提交时间: 2020-12-27 19:45:58

a, b = map(int, input().split())
h = [int(e) for e in input().split()]
a = [int(e) for e in input().split()]
ans = 10**50
for i in range(7):
  c = i
  cur = 0
  for j in a:
    cur += h[c] * j
    c += 1
    c %= 7
  ans = min(ans, cur)
print(ans)

上一题