• 满减优惠[Offer收割]编程练习赛4



    题目1 : 满减优惠
    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    最近天气炎热,小Ho天天宅在家里叫外卖。他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元。并且如果消费总计满X元,还能享受优惠。小Ho是一个不薅羊毛不舒服斯基的人,他希望选择若干道不同的菜品,使得总价在不低于X元的同时尽量低。

    你能算出这一餐小Ho最少消费多少元吗?
    输入

    第一行包含两个整数N和X,(1 <= N <= 20, 1 <= X <= 100)

    第二行包含N个整数A1, A2, ..., AN。(1 <= Ai <= 100)
    输出

    输出最少的消费。如果小Ho把N道菜都买了还不能达到X元的优惠标准,输出-1。
    样例输入

        10 50
        9 9 9 9 9 9 9 9 9 8

    样例输出

        53
     0元的时候肯定不许点菜就可满足。

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <queue>
    using namespace std;
    const int maxn = 200010;
    typedef long long ll;
    int dp[10500],s[500],sum;
    int main()
    {
        //freopen("data.in","r",stdin);
        int n,x;
        scanf("%d%d",&n,&x);
        for(int i=1;i<=n;i++){
            scanf("%d",s+i);
            sum+=s[i];
        }
        if(sum<x){printf("-1
    ");}
        else{
            dp[0]=1;
            for(int i=1;i<=n;i++){
                for(int j=sum;j>=s[i];j--){
                    dp[j]|=dp[j-s[i]];
                }
            }
            for(int i=x;i<=sum;i++)
            if(dp[i]){
                printf("%d
    ",i);
                break;
            }
        }
    }
  • 相关阅读:
    Scala学习(八)---Scala继承
    Scala学习(九)---文件和正则表达式
    Scala学习(六)---Scala对象
    jemter----命令行模式(cmd)导出测试报告
    js数据类型
    定期任务,如每月清理(SpringBoot Mybatis-Plus)
    定时执行任务(SpringBoot Mybatis-Plus)
    图片服务映射(SpringBoot mybatis-plus)
    图片压缩上传(Springboot mybatis-plus)
    java生成pdf
  • 原文地址:https://www.cnblogs.com/acmtime/p/5746671.html
Copyright © 2020-2023  润新知