• P5365 [SNOI2017]英雄联盟


    题目描述

    正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」。

    现在,小皮球终于受不了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!

    小皮球只会玩N 个英雄,因此,他也只准备给这 N 个英雄买皮肤,并且决定,以后只玩有皮肤的英雄。

    这 N 个英雄中,第 i 个英雄有 Ki 款皮肤,价格是每款Ci Q 币(同一个英雄的皮肤价格相同)。

    为了让自己看起来高大上一些,小皮球决定给同学们展示一下自己的皮肤,展示的思路是这样的:对于有皮肤的每一个英雄,随便选一个皮肤给同学看。

    比如,小皮球共有 5 个英雄,这 5 个英雄分别有 0,0,3,2,4 款皮肤,那么,小皮球就有 3 *2*4 = 243×2×4=24 种展示的策略。

    现在,小皮球希望自己的展示策略能够至少达到 M 种,请问,小皮球至少要花多少钱呢?

    输入输出格式

    输入格式:

    第一行,两个整数 N,M。

    第二行,N 个整数,表示每个英雄的皮肤数量 Ki

    第三行,N 个整数,表示每个英雄皮肤的价格 Ci

    输出格式:

    一个整数,表示小皮球达到目标最少的花费。

    #include<bits/stdc++.h>
    using namespace std;
    long long int n,m;
    long long f[1000000];
    int val[100000],cnt[100000];
    inline int read() {
        char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
        while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
    }
    int main()
    {
        cin>>n>>m;
        f[0]=1;
        for(int i=1;i<=n;i++)cnt[i]=read();
        for(int i=1;i<=n;i++)val[i]=read();
        for(int i=1;i<=n;i++)
        for(int j=25000;j>=0;j--)
        for(int k=1;k<=cnt[i];k++)
        if(j>=k*val[i])f[j]=max(f[j],f[j-k*val[i]]*k);
        for(int i=1;i<=25000;i++)if(f[i]>=m){cout<<i;return 0;
        }
    }
  • 相关阅读:
    springboot启动加载自定义插件
    sql记录
    集成WebMvcConfigurationSupport后,swagger3.0页面404无法访问 heamin
    [HTML/CSS] 超炫Loading动画
    [HTML/CSS] 简单的Menu图标
    Mysql笔记
    性能指标
    Select IO多路复用。
    Java垃圾回收
    JAVAAQS(AbstractQueuedSynchronizer)
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/10887247.html
Copyright © 2020-2023  润新知