zoukankan      html  css  js  c++  java
  • 洛谷——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 }
    水数据,贪心过
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    [习题]输入自己的生日(年/月/日)#2 -- 日历(Calendar)控件的时光跳跃,一次跳回五年、十年前?--TodaysDate属性、VisibleDate属性
    Interesting effects
    kendoGrid methods方法
    kendoListBox 选择控件
    kendo format
    kendoGrid Event事件
    kendoGrid的一些基础配置
    kendoGrid edit功能
    kendoDatePicker日期选择控件
    Json与DataSet转化
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6719918.html
Copyright © 2011-2022 走看看