hihoCoder184——满减优惠
题目1 : 满减优惠
-
描述
最近天气炎热,小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——满减优惠相关推荐
- hihoCoder1353 满减优惠
#1353 : 满减优惠 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ...
- 电商平台营销活动玩法大全、拓客、吸粉、裂变、引流、团购返现、限时折扣、找人代付、砍价代付、多人拼团、优惠套餐、秒杀折扣、满减优惠、电商营销、电商推广、商品促销、营销红包、Axure原型、rp原型
电商平台营销活动玩法大全.拓客.吸粉.裂变.引流.团购返现.限时折扣.找人代付.砍价代付.多人拼团.优惠套餐.秒杀折扣.满减优惠.电商营销.电商推广.商品促销.营销红包.Axure原型.rp原型 Ax ...
- 优惠券使用/凑满减优惠/硬币组合问题(结果包括最优组合和最优值)
DP法求满减优惠组合问题 一.原问题描述 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别 ...
- 满减优惠用多了,想过怎么运作的吗?
本文内容逻辑图 本文重点分析电商满减营销产品. 行文逻辑分为三大模块:1.基本概念:2.详细动线分析:3.建议.其中动线分析为重点. 一. 满减营销产品的基本概念 (一)满减产品的类型 满减优惠卷: ...
- 满100减50 还是满50减20,该如何设置满减优惠?
诸葛君说:双十一已经过去近半个月了,但有关双十一的讨论还是络绎不绝,记得很早之前的双十一还是没有一丝丝套路,统统五折,而非现在犹如微积分一样晦涩难懂的规则. 满减是在线销售常见的优惠方式,称之为&qu ...
- 满减优惠卷(LevOJ P1552)
先啰嗦一句,这题的来源是 2018 NUIST 程序设计竞赛的 D 题. 题目描述 每天我们都会思考一个令人纠结的难题:晚上吃什么.你打开手机想点个外卖,发现自己有一张满减优惠券快要过期了. 你选择了 ...
- python 拼多多抢券_拼多多满减优惠 AC代码 python
思路就是从价值最高的优惠券开始遍历尝试,价值相同的优惠券则先尝试需要满足的金额小的,然后用在比满减所需金额大的商品中最便宜的那个上,就ok from sys import stdin as f [n, ...
- hiho 满减优惠(暴力)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果 ...
- #1353 : 满减优惠(01背包变形)
描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...
最新文章
- 微软将Bing变开放平台 同谷歌争夺开发者
- Linux监控 Nagios
- 一次SYN***之战之Linux如何防SYN***
- 告诉你,Spring Boot 真是个牛逼货
- Socket相关操作超时
- LBS移动网络基站定位
- RHEL 8 - 用VM Image Builder构建虚机镜像
- return语句的用法
- vue多个根节点上的属性继承
- mysql jdbc配置重连_Spring Boot 配置MySQL数据库重连的操作方法
- 齐杰文学CMS - 关关采集器2021可用19条采集规则
- SolidWorks用鼠标中键控制模型的旋转、缩放和平移
- 数论--P8845 [传智杯 #4 初赛] 小卡和质数
- 蓝牙5.3 Core Spec演进与功能变化
- ICC 图文学习——LAB0:ICC图形界面
- RACI 职责分配矩阵 模型使用详解及案例分析
- math_基本初等函数图型(幂函数/指数/对数/三角/反三角)
- cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
- 教育行业电商SaaS系统解决方案:助力企业实现经营、管理一体化
- 马上毕业了,拼多多和国家电网,选哪个?