zoukankan      html  css  js  c++  java
  • codevs 2075 yh女朋友的危机

    题目描述 Description

    不知为什么,yh的女朋友们都掉入了一个深度为h的天坑。由于天坑太深,yh的女朋友们无法爬出去,于是她们决定用搭人梯的方式脱困。我们知道yh的每位女朋友从脚到肩膀的高度ai,以及肩膀到伸直手臂的距离bi。由k个人搭成的人梯的高度为a1+a2+…+ak+bk;当人梯高度大于等于h时,第k个人就可以爬出天坑,并再也不进来。你能帮助他的女朋友们安排一个方案,使得最多的女朋友能爬出天坑吗?

    输入描述 Input Description

    第一行一个整数n,表示有n个女朋友掉进坑里

    第2行到第n+1行,每行两个整数,表示女朋友从脚到肩膀的距离ai和从肩膀到伸直手臂的距离bi。

    第n+2行为一个整数h,表示天坑深度为h。

    输出描述 Output Description

    输出一行,一个整数,表示最多能爬出天坑的女朋友的数量

    样例输入 Sample Input

    2

    20 10

    5 5

    35

    样例输出 Sample Output

    1

    数据范围及提示 Data Size & Hint

    对于40%数据,n≤100

    对于100%数据,n≤2000,ai,bi,h≤100000

    代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int f[4001],n,h,ans;
    struct node
    {
        int ax,ay;
    }a[2001];
    bool cmp(const node&x,const node&y)
    {
        return x.ax+x.ay<y.ax+y.ay;
    }
    int main()
    {
        int i,j;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
          scanf("%d%d",&a[i].ax,&a[i].ay);
        scanf("%d",&h);
        memset(f,-1,sizeof(f));
        f[0]=0;
        for(i=1;i<=n;i++)
          f[0]+=a[i].ax;
        sort(a+1,a+n+1,cmp);
        for(i=1;i<=n;i++)
           for(j=ans;j>=0;j--)
           {
              if(f[j]+a[i].ay>=h)
                 f[j+1]=max(f[j+1],f[j]-a[i].ax);
              if(f[ans+1]>=0) 
                ans++;
           }
         printf("%d",ans);
         return 0;
    }
  • 相关阅读:
    sfzwapp2
    linux-umount时提示device is busy时,如何查找被何进程占用?
    MySQL管理_数据库启动与关闭
    cache 比free 多
    NFS
    mysql备份多个库
    liunx修改时区,UTC 修改到CST
    mongodb备份恢复
    嵌入式新闻早班车-第24期
    【STM32H7的DSP教程】第48章 STM32H7的中值滤波器实现,适合噪声和脉冲过滤(支持逐个数据的实时滤波)
  • 原文地址:https://www.cnblogs.com/jyhywh/p/6067246.html
Copyright © 2011-2022 走看看