zoukankan      html  css  js  c++  java
  • 满减优惠[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;
            }
        }
    }
  • 相关阅读:
    宽带上网路由器设置
    ssh 与 irc
    Centos7 wifi
    linux无法挂载u盘
    virtualbox之usb设备的分配
    5G工程师必备!5G协议清单大全
    SSB的时频资源怎么确定的?UE那边怎么检测呢?
    link
    C++有用link
    C++学习路线转载
  • 原文地址:https://www.cnblogs.com/acmtime/p/5746671.html
Copyright © 2011-2022 走看看