列表

详情


NC247048. Ginger的大花环

描述

Ginger 有一个 n 朵花的大花环,但是花环没有颜色,所有 Ginger 请来了他的好朋友 m_rd 来给染颜色,但 Ginger 只能提供 k 种颜色,第  种颜色有一个花费 w_i ,他想让你用最小的花费来给大花环染色,但 Ginger 还有一个条件,上的连续三朵花不能是同一种颜色。  
注意花环是环状结构。

输入描述

第一行给定两个正整数   表示花的个数和颜色个数。

第二行给定  个正整数   表示每个颜色的花费。

输出描述

输出最小花费,如果不能染色输出 Ginger666

示例1

输入:

5 4
1 2 3 4

输出:

7

说明:

样例  为 
由于是环形,所以不能是 1+1+2+1+1 =6

示例2

输入:

3 1
1

输出:

Ginger666

原站题解

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

C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 512K, 提交时间: 2022-12-16 21:36:20

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n,k;cin>>n>>k;
    int a[5];
    for(int i=0;i<k;i++)cin>>a[i];
    if(k<=1){
        printf("Ginger666");
        return 0;
    }
    sort(a,a+k);
    printf("%lld",(n+2)/3*a[1]+(n-(n+2)/3)*a[0]);
    return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 432K, 提交时间: 2023-08-02 18:18:20

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long int i,j,k,m,n;
    int as[5];
    cin>>n>>m;
    for(i=0;i<m;i++)cin>>as[i];
    sort(as,as+m);
    if(m==1)cout<<"Ginger666";
    else
    {
        cout<<(n+2)/3*as[1]+(n-(n+2)/3)*as[0];
    }
}

pypy3 解法, 执行用时: 66ms, 内存消耗: 21204K, 提交时间: 2022-12-16 20:48:12

n,m=map(int,input().split())
l=list(map(int,input().split()))
if m!=1:
    x=n%3
    n=n//3
    a=min(l)
    l.remove(a)
    b=min(l)
    sum=0
    sum+=n*2*a+n*b
    if x==1:
        sum+=b
    if x==2:
        sum+=a+b
    print(sum)
else:
    print("Ginger666")

Python3 解法, 执行用时: 42ms, 内存消耗: 4540K, 提交时间: 2022-12-16 20:35:30

n,k=map(int,input().split())
s=list(map(int,input().split()))
if k==1:
    print("Ginger666")
    exit()
s.sort()
v=(s[0]*2+s[1])*(n//3)
if n%3>=2:
    v+=s[0]
if n%3>=1:
    v+=s[1]
print(v)

上一题