P2018 「Nescafé26」小猫爬山

时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。

描述

Freda和rainbow只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过W。每租用一辆缆车,Freda和rainbow就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山?

输入格式

第一行包含两个用空格隔开的整数,N和W。
接下来N行每行一个整数,其中第i+1行的整数表示第i只小猫的重量Ci。

输出格式

输出一个整数,最少需要多少美元,也就是最少需要多少辆缆车。

测试样例1

输入

5 1996
1
2
1994
12
29

输出

2

备注

对于100%的数据,1<=N<=18,1<=Ci<=W<=10^8。
Nescafé26

——————————————————————我是分割线—————————————————————————————

ID-DFS题目。

从1~N枚举答案,迭代加深进行搜索。
每次dfs时,枚举每只小猫被放在了哪一个缆车上。
这样会TLE,所以我们加个剪枝:
*第i只小猫只能放在前i个缆车上(放到更后面的车上没有意义)。
这个乍一看不理解,再一看却发现——这不就是抽屉原理吗???   QAQ~
这样就AC了,核心代码也不长。

 1 /*
 2     Problem:tyvj 2018
 3     OJ:        TYVJ
 4     User:    S.B.S.
 5     Time:    169 ms
 6     Memory: 1316 kb
 7     Length: N/A
 8 */
 9 #include<iostream>
10 #include<cstdio>
11 #include<cstring>
12 #include<cmath>
13 #include<algorithm>
14 #include<queue>
15 #include<cstdlib>
16 #include<iomanip>
17 #include<cassert>
18 #include<climits>
19 #include<functional>
20 #include<bitset>
21 #include<vector>
22 #include<list>
23 #include<map>
24 #define maxn 100001
25 #define F(i,j,k) for(int i=j;i<=k;i++)
26 #define M(a,b) memset(a,b,sizeof(a))
27 #define FF(i,j,k) for(int i=j;i>=k;i--)
28 #define inf 0x3f3f3f3f
29 #define maxm 1001
30 #define mod 998244353
31 //#define LOCAL
32 using namespace std;
33 int read(){
34     int x=0,f=1;char ch=getchar();
35     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
36     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
37     return x*f;
38 }
39 int n,m,w;
40 int dep,ans=-1;
41 int c[maxn],re[maxn];
42 inline void dfs(int u)
43 {
44     int a,b;bool flag=false;
45     if(ans!=-1) return;
46     if(u>n){
47         ans=dep;
48         return;
49     }
50     F(i,1,min(u,dep)){
51         if(w-re[i]<c[u]) continue;
52         re[i]+=c[u];flag=true;
53         dfs(u+1);
54         if(ans!=-1) return;
55         re[i]-=c[u];
56     }
57     if(flag==false) return;
58 }
59 int main()
60 {
61     std::ios::sync_with_stdio(false);
62     #ifdef LOCAL
63     freopen("data.in","r",stdin);
64     freopen("data.out","w",stdout);
65     #endif
66     cin>>n>>w;
67     F(i,1,n) cin>>c[i];
68     for(dep=1;;dep++){
69         dfs(1);
70         if(ans!=-1){
71             cout<<ans<<endl;
72             break;
73         }
74     }
75     return 0;
76 }

View Code

转载于:https://www.cnblogs.com/SBSOI/p/5847700.html

tyvj P2018 「Nescafé26」小猫爬山 解题报告相关推荐

  1. 「ZJOI2016」大森林 解题报告

    「ZJOI2016」大森林 神仙题... 很显然线段树搞不了 考虑离线操作 我们只搞一颗树,从位置1一直往后移动,然后维护它的形态试试 显然操作0,1都可以拆成差分的形式,就是加入和删除 因为保证了操 ...

  2. 「SDOI2014」数数 解题报告

    「SDOI2014」数数 题目描述 我们称一个正整数 \(N\) 是幸运数,当且仅当它的十进制表示中不包含数字串集合 \(S\) 中任意一个元素作为其子串. 例如当 \(S=(\)22, 333, 0 ...

  3. 「JLOI2015」战争调度 解题报告

    「JLOI2015」战争调度 感觉一到晚上大脑就宕机了... 题目本身不难,就算没接触过想想也是可以想到的 这个满二叉树的深度很浅啊,每个点只会和它的\(n-1\)个祖先匹配啊 于是可以暴力枚举祖先链 ...

  4. 「CH2101」可达性统计 解题报告

    CH2101 可达性统计 描述 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量.N,M≤30000. 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到 ...

  5. 「CH2401」送礼物 解题报告

    CH2401 送礼物 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_- ...

  6. LOJ#6103. 「2017 山东二轮集训 Day2」第一题 解题报告

    LOJ#6103. 「2017 山东二轮集训 Day2」第一题 解题报告 前置知识:闭区间上的连续函数的零点存在性定理: 我们定义这样的函数: 定义域为 [ l , r ] ∩ Z [l,r]\cap ...

  7. TYVJ 1939 「Poetize4」玉蟾宫

    背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. [题目分析] 单调栈模板题目.用递推计算最长延伸高度. [代码] #i ...

  8. Tyvj P1939「Poetize4」玉蟾宫

    背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代 ...

  9. 「洛谷P1343」地震逃生 解题报告

    P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...

最新文章

  1. 16S+功能预测发Sciences:尸体降解过程中的微生物组
  2. 浏览器打开出现证书错误_SSL证书=安全?小心,别错漏了TA…
  3. Flash,EEPROM区别
  4. Lesson 1#03-Python安装与Hello Python World
  5. 多服务器 elk 搭建 [elasticsearch 7.0 ]
  6. SQL Server2008的安装与管理 (第一部分)
  7. Python高手之路【十】python基础之反射
  8. 一条数据的HBase之旅,简明HBase入门教程3:适用场景
  9. 华为RDPM项目管理方法及文档免费下载
  10. 【BZOJ5336】【TJOI2018】party
  11. java强引用不会被回收_强引用(Strong Reference)-不回收
  12. leetcode day 2 【1905. 统计子岛屿】 BFS/DFS
  13. 程序员成长之路(一)
  14. Quartz执行逻辑(七)任务的暂停和恢复
  15. h5 底部按钮兼容 iPhone X(解决底部横杠遮挡问题)
  16. HttpRequest 和HttpWebRequest的区别(转)
  17. python中PIL的安装参考教程
  18. 认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)
  19. 基于Egret的微信小游戏H5项目总结
  20. SNS网络能流行多久

热门文章

  1. (大佬)睿智的目标检测13——Keras搭建mtcnn人脸检测平台
  2. 常用算法设计技术总结
  3. 音频频谱图(自定义View——进阶篇2)
  4. Configuring incomplete, errors occurred!
  5. 安装远程连接Ubuntu Server 的图形界面——x2go远程连接桌面
  6. 移动性能测试工具perfDog分享和wifi链接问题
  7. %2d, %02d, %d的区别
  8. AD仿真功能描述文档
  9. ORA-01031:insufficient privileges 解决方法
  10. 程序员去外包的后遗症是什么