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;
            }
        }
    }
  • 相关阅读:
    Pipe
    An Easy Problem?!
    Kadj Squares
    Space Ant
    Intersection
    让网页变为可编辑状态
    typescript入门基础
    大家都能看懂的 canvas基础教程
    数组的foreach方法和jQuery中的each方法
    html单行、多行文本溢出隐藏
  • 原文地址:https://www.cnblogs.com/acmtime/p/5746671.html
Copyright © 2011-2022 走看看