题目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。

好久没有写题了,不得不说csdn这个编辑页面真的是越改越差。

这道题我用了动规跟dfs做,结果dfs只有70分,我也不太懂,都po出来吧。动规好理解,就是01背包问题,这里再梳理一下这类型的问题。

01背包:动态规划之01背包问题(最易理解的讲解)

大概意思就是:f [ I, j ] = max { ( f [ i-1, j - Wi ] + Pi)(其中 j >= Wi ) , f [ I-1, j ] } :f代表背包里有 I 个物体,其重量为 j 时的价值,其中每个物品的重量为Wi,价值为Pi。一般遍历就是从 i : 0-->n,j :0 --> sum(Wi),(初始值都为零)也视情况而定。

int main(){int sum = 0;cin>>n>>x;int dp[200] = {0};for(int i = 0; i<n; i++){scanf("%d", &a[i]);sum += a[i];}int d = sum-x;if(d < 0) printf("-1\n");else if(d == 0) printf("%d\n", x);else{int out = -1;for(int i = 0; i<n; i++){for(int j = d; j>=0; j--){dp[j] = max(dp[j], dp[j-a[i]]+a[i]);out = max(dp[j], out);}}printf("%d", out);}return 0;
}

因为这个对物品的个数不敏感,所以不用dp[i,j],只用dp[i]即可。先将所有的物体全放进去,然后在物品总重大于x(d>0)的情况下能拿多少就拿多少。之前一直想着先动规出在总重小于x的时候拿到最大,然后再加上任意其他看最小,可行性很低,换个思路就简单多了。

dfs我也不知道哪里错了,就是排列组合的说。

int a[200] = {0};
int n, x;int dfs(int b, int sum){int out = 1000000000;if(sum >= x){return sum;}for(int i = b+1; i<n; i++){out = min(out, dfs(i, sum+a[i]));}return out;
}int _main() {int sum = 0;int out = 1000000000;cin>>n>>x;for(int i = 0; i<n; i++){scanf("%d", &a[i]);sum += a[i];}if(sum < x){printf("-1\n");return 0;}sort(a, a+n, [](int x1, int x2){return x1 < x2;});for(int i = 0; i<n; i++){out = min(out, dfs(i, a[0]));}printf("%d\n", out);return 0;
}

hihoCoder184——满减优惠相关推荐

  1. hihoCoder1353 满减优惠

    #1353 : 满减优惠 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ...

  2. 电商平台营销活动玩法大全、拓客、吸粉、裂变、引流、团购返现、限时折扣、找人代付、砍价代付、多人拼团、优惠套餐、秒杀折扣、满减优惠、电商营销、电商推广、商品促销、营销红包、Axure原型、rp原型

    电商平台营销活动玩法大全.拓客.吸粉.裂变.引流.团购返现.限时折扣.找人代付.砍价代付.多人拼团.优惠套餐.秒杀折扣.满减优惠.电商营销.电商推广.商品促销.营销红包.Axure原型.rp原型 Ax ...

  3. 优惠券使用/凑满减优惠/硬币组合问题(结果包括最优组合和最优值)

    DP法求满减优惠组合问题 一.原问题描述 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别 ...

  4. 满减优惠用多了,想过怎么运作的吗?

    本文内容逻辑图 本文重点分析电商满减营销产品. 行文逻辑分为三大模块:1.基本概念:2.详细动线分析:3.建议.其中动线分析为重点. 一. 满减营销产品的基本概念 (一)满减产品的类型 满减优惠卷: ...

  5. 满100减50 还是满50减20,该如何设置满减优惠?

    诸葛君说:双十一已经过去近半个月了,但有关双十一的讨论还是络绎不绝,记得很早之前的双十一还是没有一丝丝套路,统统五折,而非现在犹如微积分一样晦涩难懂的规则. 满减是在线销售常见的优惠方式,称之为&qu ...

  6. 满减优惠卷(LevOJ P1552)

    先啰嗦一句,这题的来源是 2018 NUIST 程序设计竞赛的 D 题. 题目描述 每天我们都会思考一个令人纠结的难题:晚上吃什么.你打开手机想点个外卖,发现自己有一张满减优惠券快要过期了. 你选择了 ...

  7. python 拼多多抢券_拼多多满减优惠 AC代码 python

    思路就是从价值最高的优惠券开始遍历尝试,价值相同的优惠券则先尝试需要满足的金额小的,然后用在比满减所需金额大的商品中最便宜的那个上,就ok from sys import stdin as f [n, ...

  8. hiho 满减优惠(暴力)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果 ...

  9. #1353 : 满减优惠(01背包变形)

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

最新文章

  1. 微软将Bing变开放平台 同谷歌争夺开发者
  2. Linux监控   Nagios
  3. 一次SYN***之战之Linux如何防SYN***
  4. 告诉你,Spring Boot 真是个牛逼货
  5. Socket相关操作超时
  6. LBS移动网络基站定位
  7. RHEL 8 - 用VM Image Builder构建虚机镜像
  8. return语句的用法
  9. vue多个根节点上的属性继承
  10. mysql jdbc配置重连_Spring Boot 配置MySQL数据库重连的操作方法
  11. 齐杰文学CMS - 关关采集器2021可用19条采集规则
  12. SolidWorks用鼠标中键控制模型的旋转、缩放和平移
  13. 数论--P8845 [传智杯 #4 初赛] 小卡和质数
  14. 蓝牙5.3 Core Spec演进与功能变化
  15. ICC 图文学习——LAB0:ICC图形界面
  16. RACI 职责分配矩阵 模型使用详解及案例分析
  17. math_基本初等函数图型(幂函数/指数/对数/三角/反三角)
  18. cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
  19. 教育行业电商SaaS系统解决方案:助力企业实现经营、管理一体化
  20. 马上毕业了,拼多多和国家电网,选哪个?

热门文章

  1. 浅谈空调冷冻机房设计注意事项
  2. python中finally是什么意思_什么是pythontry-finally语句?它能起到什么样的作用?
  3. 如何对质量数据进行分析?
  4. R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果组合起来、使用labs函数为第二个子图添加标题信息
  5. 关于图片加载的问题-如加载失败显示占位图,预加载,懒加载
  6. 「补课」进行时:设计模式(5)——从 LOL 中学习代理模式
  7. 射频(RF)一些参数小记
  8. 学习软件工程导论的心得体会
  9. 湿气重会有哪些表现?如何祛湿
  10. 复杂科学在创客教学研究中的应用