小猫爬山
来源:互联网 发布:linux高度压缩文件夹 编辑:程序博客网 时间:2024/04/26 23:23
【题目描述】:
Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。
Freda和rainbow只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过W。每租用一辆缆车,Freda和rainbow就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山?
【输入描述】:
第一行包含两个用空格隔开的整数,N和W。
接下来N行每行一个整数,其中第i+1行的整数表示第i只小猫的重量Ci。
【输出描述】:
输出一个整数,最少需要多少美元,也就是最少需要多少辆缆车。
【样例输入】:
5 19961219941229
【样例输出】:
2
【时间限制、数据范围及描述】:
时间:1s 空间:128M
对于100%的数据,1<=N<=18,1<=Ci<=W<=10^8。
一开始想到了贪心,然而只有 80分。。。
后来老师讲了是 迭代深搜 ,才反应过来。。。
结果排序排反了,直接 TLE ,这样下去吃枣药丸。。。
附代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;int n,w,ans,s=0,a[20],f[20];bool flag=false;inline int read(){ int date=0,w=1;char c=0; while(c!='-'&&(c<'0'||c>'9'))c=getchar(); if(c=='-'){w=-1;c=getchar();} while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();} return date*w;}bool cmp(const int &x,const int y){ return x>y;}void work(int x){ if(x==n+1){ flag=true; return; } for(int i=1;i<=ans;i++){ if(f[i]+a[x]<=w){ f[i]+=a[x]; work(x+1); f[i]-=a[x]; if(flag) return; } } return;}int main(){ n=read();w=read(); for(int i=1;i<=n;i++){ a[i]=read(); s+=a[i]; } sort(a+1,a+n+1,cmp); for(ans=s/w;ans<=18;ans++){ work(1); if(flag){ printf("%d\n",ans); return 0; } } return 0;}
阅读全文
1 0
- 小猫爬山
- TYVJ2018 小猫爬山
- 【NOIP2013模拟】小猫爬山
- 状压动规:BSOJ3805 小猫爬山
- 洛谷 P1361 小猫爬山
- TYVJ 2018 小猫爬山
- 【洛谷P1361】小猫爬山
- 【tyvj】【搜索】小猫爬山
- 洛谷 P1361 小猫爬山
- P1361 小猫爬山 bool dfs
- 小猫爬山 搜索 先放大的
- 二分答案+DFS验证 小猫爬山
- TYVJ P2018 「Nescafé26」小猫爬山
- BSOJ3805 codevs4228 tyvj2018 【NOIP模拟赛】小猫爬山
- tyvj P2018 「Nescafé26」小猫爬山
- Tyvj P2018 「Nescafé26」小猫爬山
- 爬山
- 爬山
- Leetcode题解-5. Longest Palindromic Substring
- HDU 6208 The Dominator of Strings(字符串)
- Python网络入门
- ArrayList源码解析
- MTP模式下恢复手机误删数据方法(MX2、MX3亲测可用)
- 小猫爬山
- 题目62-笨小熊
- jetty和tomcat的区别
- Python异常处理
- 面向对象-2
- 数据库总结(三)
- ubuntu 16.04容易死机的问题
- Python 2.7版本安装pip,及使用pip碰到的问题
- LeetCode Problem 43: Multiply Strings