• [noip模拟]小猫爬山<迭代深搜>


    【题目描述】:

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

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

    【输入描述】:

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

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

    【输出描述】:

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

    【样例输入】:

    5 1996
    1
    2
    1994
    12
    29

    【样例输出】:

    2

    【时间限制、数据范围及描述】:

    时间:1s 空间:128M

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

    第一反应还是贪心吧,不过贪心貌似分数得不完的

    后来就用迭代深搜做,虽然一开始没有A,但是仔细检查,发现没A的原因就是读入循环i从2开始没从1开始,赋值把x写成i

    这也是够6的

    思想很简单,枚举一下缆车数,缆车最多是18辆,至少要用总质量整除每辆载重辆,然后枚举的时候迭代深搜,找到最小满足的输出并跳出程序

    好吧题很简单我就直接上代码了

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<queue>
     6 #include<cstdlib>
     7 #include<iostream>
     8 #define maxn 20
     9 using namespace std;
    10 
    11 int f[maxn],a[maxn],ans,n,m,w,sum,flag;
    12 
    13 int comp(const int&x,const int&y)
    14 {
    15     return x>y;
    16 }
    17 
    18 void dfs(int x)
    19 {
    20     if(x==n+1){
    21         flag=1;return;
    22     }
    23     for(int i=1;i<=ans;i++)
    24     {
    25         if(f[i]+a[x]<=w)
    26         {
    27             f[i]+=a[x];
    28             dfs(x+1);
    29             f[i]-=a[x];
    30             if(flag)return;
    31         }
    32     }
    33     return;
    34 }
    35 
    36 int main()
    37 {
    38     freopen("catclimb.in","r",stdin);
    39     freopen("catclimb.out","w",stdout);
    40     scanf("%d%d",&n,&w);
    41     for(int i=1;i<=n;i++)
    42         scanf("%d",&a[i]),sum+=a[i];
    43     sort(a+1,a+n+1,comp);
    44     for(ans=sum/w;ans<=18;ans++)
    45     {
    46         memset(f,0,sizeof(f));
    47     //    flag=0;
    48         dfs(1);
    49         if(flag==1){
    50             printf("%d
    ",ans);return 0;
    51         }
    52     }
    53 }
    View Code
  • 相关阅读:
    项目冲刺——第三篇
    项目冲刺——第五篇
    项目冲刺——第四篇
    团队作业第3周——需求改进&系统设计
    复审与事后分析
    事后诸葛亮分析报告
    团队作业第5周——测试与发布(Alpha版本)
    第四周进销存管理系统冲刺博客汇总
    第三篇 进销存管理系统冲刺博客
    团队作业第3周——需求改进&系统设计
  • 原文地址:https://www.cnblogs.com/Danzel-Aria233/p/7605363.html
Copyright © 2020-2023  润新知