洛谷——P1361 小猫爬山

https://www.luogu.org/problem/show?pid=1361#sub

题目描述

WD和LHX饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了。

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

输入输出格式

输入格式:

第一行包含两个用空格隔开的整数,N和W。

接下来N行每行一个整数,其中第i+1行的整数表示第i只小猫的重量C i。

输出格式:

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

输入输出样例

输入样例#1:

5 1996
1
2
1994
12
29

输出样例#1:

2

说明

数据范围与约定

对于100%的数据,1<=N<=18,1<=C i <=W<=10^8。

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <cstdio>
 4
 5 using namespace std;
 6
 7 int n,w,cat[19000],sum[19000];
 8 bool flag;
 9
10 void DFS(int num_cat,int num_car)
11 {
12     if(flag) return ;
13     if(num_cat==n+1)
14     {
15         flag=1;
16         return ;
17     }
18     for(int i=1;i<=min(num_cat,num_car);i++)
19         if(sum[i]+cat[num_cat]<=w)
20         {
21             sum[i]+=cat[num_cat];
22             DFS(num_cat+1,num_car);
23             sum[i]-=cat[num_cat];
24         }
25 }
26
27 int main()
28 {
29     scanf("%d%d",&n,&w);
30     for(int i=1;i<=n;i++)
31         scanf("%d",&cat[i]);
32     for(int i=1;i<=n;i++)
33     {
34         DFS(1,i);
35         if(flag)
36         {
37             printf("%d",i);
38             return 0;
39         }
40     }
41     return 0;
42 }

迭代加深DFS,正解

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,w,c[20],sum,p,ans=1;
 4 int main()
 5 {
 6     cin>>n>>w;
 7     for(int i=1;i<=n;i++)
 8     {
 9         cin>>c[i];
10         sum+=c[i];
11     }
12     p=(sum+w-1)/w;
13     cout<<p<<endl;
14     return 0;
15 }

水数据,贪心过

时间: 2024-10-17 03:35:30

洛谷——P1361 小猫爬山的相关文章

洛谷 P1361 小猫爬山

题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,WD和LHX就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 输入输出格式 输入格式: 第一行包含两个用空格隔开的整数,N和W. 接下来N行每行一个整数,其中第i+1行

洛谷—— P1561 [USACO12JAN]爬山Mountain Climbing

https://daniu.luogu.org/problemnew/show/P1561 题目描述 Farmer John has discovered that his cows produce higher quality milk when they are subject to strenuous exercise. He therefore decides to send his N cows (1 <= N <= 25,000) to climb up and then back

洛谷—— P1375 小猫

https://www.luogu.org/problemnew/show/1375 题目描述 有2n只小猫站成一圈,主人小明想把它们两两之间用绳子绑住尾巴连在一起.同时小明是个完美主义者,不容许看到有两根绳子交叉.请问小明有几种连线方案,可以把让所有小猫两两配对? 方案数很大,仅需输出方案数模1000000007(一个质数)的值. 数据范围: 60% N<=100 100% N<=100000 输入输出格式 输入格式: 输入一个整数n 输出格式: 输出方案数对1000000007取模的值 输

洛谷 P1561 [USACO12JAN]爬山Mountain Climbing

传送门 题目大意: n头牛,上山时间为u(i),下山为d(i). 要求每一时刻最多只有一头牛上山,一头牛下山. 问每头牛都上下山后花费最少时间. 题解:贪心 推了推样例,发现上山时间一定,那找个下山最快 的当最后一头山上的牛. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define LL long long #define N 25009 using

洛谷冬令营随想

洛谷春令营结束不久,就我个人而言实在是收益良多. 课后与洛谷的讲师们略有交谈,并且稍微接触了别地的信竞生,顿感弱小--决定把一些了解到的信息和感想放在这里.比较杂,将就着看吧. 首先说下近年竞赛的发展吧. 近年信息学竞赛带来的升学优势增大了不少,机会增加了,这是好事.但这同样也意味着竞争将激烈许多. 举几个例子: 浙江小学便培育"种子选手",浙江初赛分数线一度达到90分. 著名的南山中学,C类买不停,此处不细说. 很大一部分选手以完全停课备战比赛. 切实参与到竞赛中,能感觉到许多学校已

洛谷 P2709 BZOJ 3781 小B的询问

题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数.小B请你帮助他回答询问. 输入输出格式 输入格式: 第一行,三个整数N.M.K. 第二行,N个整数,表示小B的序列. 接下来的M行,每行两个整数L.R. 输出格式: M行,每行一个整数,其中第i行的整数表示第i个询问的答案. 输入输出样例 输入样例#1: 6 4 3 1 3 2 1 1 3

洛谷1231 教辅的组成

洛谷1231 教辅的组成 https://www.luogu.org/problem/show?pid=1231 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书多得数不胜数,其中有书,有答案,有练习册.已知一个完整的书册均应该包含且仅包含一本书.一本练习册和一份答案,然而现在全都乱做了一团.许多书上面的字迹都已经模糊了,然而HansBug还是可

洛谷教主花园dp

洛谷-教主的花园-动态规划 题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢3种树,这3种树的高度分别为10,20,30.教主希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,教主想要你设计出一套方案,使得观赏价值之和最高. 输入输出格式 输入格式: 输入文件garden.in的第1行为一个正整数n,表示需要种的

洛谷 P2801 教主的魔法 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=2801 题目描述 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为1.2.…….N. 每个人的身高一开始都是不超过1000的正整数.教主的魔法每次可以把闭区间[L, R](1≤L≤R≤N)内的英雄的身高全部加上一个整数W.(虽然L=R时并不