hihoCoder
来源:互联网 发布:java模拟登陆获取数据 编辑:程序博客网 时间:2024/05/20 02:24
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
10 509 9 9 9 9 9 9 9 9 8
- 样例输出
53
描述
最近天气炎热,小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。
直接写DFS搜索会超时,这里用二进制枚举,本质也是暴力枚举子集,但位运算速度很快可以AC
#include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; const int N = 25; int a[N]; int main(){ int n, x; while( ~scanf( "%d%d", &n, &x ) ){ int sum = 0; for( int i = 0; i < n; ++i ) { scanf( "%d", &a[i] ); sum += a[i]; } if( sum < x ) { puts( "-1" ); return 0; } int ans = INF; for( int i = 1; i < ( 1 << n ); ++i ) { int tmp = 0; for( int j = 0; j < n; ++j ) { if( ( i >> j ) & 1 ) { tmp += a[j]; } } if( tmp >= x ) ans = min( ans, tmp ); } printf( "%d\n", ans ); } return 0; }
0 0
- hihocoder:
- hihoCoder
- Hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- hihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- 面试时,可以问面试官问题总结
- iOS OpenGL ES 研究序一:痛并快乐的OpenGL ES开篇
- 一张图说明softmax layer是什么
- 学习python是为了让你更好的玩
- 1083: 十->二进制转换
- hihoCoder
- 自定义 React Native 二维码扫描组件(简单,易用!)
- python中list的四种查找方法
- resin3.10 resin4:多实例部署使用记录。
- zookeeper学习
- codeforces 514d[补]
- JS 性能优化工具 Facebook Prepack
- Odoo10 开发者文档(2)--建立一个网站
- CTF逆向工程入门_2