Mountain Climbing

在这里插入图片描述
题意:

农场主约翰发现他的奶牛剧烈运动后产奶的质量更高,所以他决定让N头(1 <= N <= 25,000)奶牛去附近爬山再返回来。
第i头奶牛用时U(i)爬上山,用时D(i)下山。作为家畜,奶牛们每段路都要有农夫的帮助,可是由于经济疲软,农场里只有两个农夫John和Don。John计划引导奶牛爬山,Don引导奶牛下山。虽然每个奶牛都需要向导,但每段旅途只有一名农夫。所有任何时刻只有一头奶牛爬山也只能有一头奶牛下山,奶牛爬上山后,可以暂时停留在山顶上等待Don的帮助。奶牛上山的顺序和下山的顺序不一定要相同。
请计算出所有N 头牛完成旅程的最短时间

分析:

上山必定是连续不断的,最优的情况就是下山也尽量保持连续不断,
于是我们就有了一个目标:让在山顶等待的牛多一些,让下山序列尽量连续,同时让第一次下山时间尽可能接近第一次上山时间。

我们要让山上的牛多一点,即让上山快的牛先上来,但是要注意可能下山太快,山上都还没有牛就下山了,会出现等待。所以我们可以按照上山时间和下山时间分别考虑(这里记上山时间为 up ,下山时间为 dn )

当 up < dn ,按 up 升序排序
当 up ≥ dn ,按 dn 降序排序

code:

#include <bits/stdc++.h>
#define int long long
using namespace std;
//当 up<dn ,按 up 升序排序
//当 up≥dn ,按 dn 降序排序
struct Node{
    int up , down ;
    bool operator < (Node no1) const{
        if(up<down){
            if(no1.up < no1.down) return up < no1.up ;//内部排序
            else return true;
        }else{
            if(no1.up < no1.down) return false;
            else return down > no1.down;//内部排序
        }
    }
};
Node a[200005] ;
int n ;
signed main()
{
    //freopen("in","r",stdin);
    scanf("%lld",&n);
    for(int i = 1 ; i <= n ; i++) {
        scanf("%lld%lld",&a[i].up,&a[i].down);
    }
    sort(a+1,a+1+n);
    for(int i = 1 ; i <= n ; i++) {
        a[i].up += a[i-1].up;
    }
    for(int i = 1 ; i <= n ; i++) {
        //该牛的下山时间取决于max(当前牛到达时间,上一个牛完成下山时间)
        a[i].down += max(a[i].up,a[i-1].down);
    }
    cout << a[n].down << endl;
    return 0 ;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中有多个Climbing System插件,但最流行和常用的是Climbing System Pro插件。下面是Climbing System Pro插件的文档: 1. 简介 Climbing System Pro是一款Unity插件,用于快速创建品质的爬山系统。它支持多种爬山类型,包括攀岩、墙壁攀登、梯子攀爬等。Climbing System Pro具有一些强大的功能,例如手部IK、动画融合、多个爬山点的支持等。 2. 安装 您可以在Unity Asset Store中找到Climbing System Pro插件并进行安装。安装完成后,您可以在Unity编辑器中看到Climbing System Pro的菜单选项。 3. 快速入门 要创建一个基本的爬山系统,您需要执行以下步骤: - 创建一个包含Mesh Collider组件的游戏对象,用于表示可爬物体。 - 将Climber组件添加到要进行爬山的角色上。 - 在Climber组件中选择“Add Climbing Point”选项,添加一个或多个爬山点。 - 在Climber组件中选择“Set Climbing Type”选项,选择爬山类型(例如攀岩、墙壁攀登等)。 - 按下游戏中的特定按键,以始爬山。 4. 级用法 Climbing System Pro还具有一些级功能,例如动画融合、手部IK等。您可以通过查看Climbing System Pro的文档来了解多信息。 5. 支持 如果您在使用Climbing System Pro时遇到了任何问题,您可以查看官方文档或联系发者以获取支持。 以上是Climbing System Pro插件的简要文档,希望能够帮助您了解如何使用该插件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值