冒险岛

69 篇文章 0 订阅

冒险岛


Description

这时,我们的主人公F1(没什么名字好取,为了简单,暂且这样)来到了一块神秘的地方——冒险岛,这是一个充满荆棘的地方,随时都可能有生命危险。
F1也深知这一点,他做好了充分的准备,他已经通过高空扫描技术对冒险岛进行了分析:
冒险岛是由 NM 个单位方格组成,即 N M 列的网格。
格子有两种形式:沙漠与圣水湖。
每一个沙漠都有一个摧毁值 D ,当F1走到一个摧毁值为 D 的沙漠时,他的生命值将减少 D ,每一个圣水湖都有一个容量 C,当F1走到一个容量为 C 的圣水湖时,它将得到 C 单位圣水。
主人公F1可以向下(行数增加)向右(列数增加)的移动,它必须从 (1,1) 走到 (n,m) (第 n m 列,下同),中间不能走出这个岛。
由于某种不为人知的力的作用(外星人?宇宙引力?或是四维空间中的“物质”?谁知道!),使得从 (1,1) (n,m) 一定会经过沙漠。你不必担心F1的生命,也许他的生命值有无穷大,也许他凭着坚强的意志可以在生命值为负数的情况下移动——他一定能走出这个岛,在最后走出 (n,m) 时,他需要用他得到的所有圣水去弥补他失去的生命值,你只需关心他的“精神面貌值”:得到的圣水与失去的生命值的比值。
你需要使“精神面貌值”最大。


Input

第一行有两个整数 N , M 1<=N,M<=300 ),一下 N 行,每一行有 M 个整数,第 i j 个整数 Pi,j 1000000<=Pi,j<=1000000 )描述格子 (i,j)
如果小于 0 ,则表示摧毁值为 |Pi,j| 的沙漠;否则,表示容量为 Pi,j 的圣水湖。


Output

仅一个数,表示最大“精神面貌值”,精确到小数点后 4 位。


Sample Input

3 3
100 -20 -30
-100 -100 -100
-100 100 –100


Sample Output

0.9091


Solution

二分答案 k ,则

k

+k0

然后就是动归就最大路径了,若最大值小于 0 <script type="math/tex" id="MathJax-Element-1525">0</script> ,则不成立。


Solution

#include <iostream>
#include <cstdio>

#define LL long long
#define Max(x,y) ((x)>(y)?(x):(y))

using namespace std;

LL n,m;
double Maxn;
LL map[400][400];
double f[400][400];

bool judge(double x){
    for(LL i=1;i<=n;i++)
        for(LL j=1;j<=m;j++){
            f[i][j]=Max(f[i-1][j],f[i][j-1]);
            if(map[i][j]<0)f[i][j]+=x*map[i][j];
            else f[i][j]+=map[i][j];
        }
    return f[n][m]>=0;
}

double binary(double l,double r){
    double ans=-1;
    while(r-l>=1e-5){
        double mid=(l+r)/2;
        if(judge(mid)){
            ans=Max(ans,mid);
            l=mid;
        }
        else{
            r=mid;
        }
    }
    return ans;
}

int main(){
    scanf("%lld%lld",&n,&m);
    for(LL i=1;i<=n;i++)
        for(LL j=1;j<=m;j++){
            scanf("%lld",&map[i][j]);
            if(map[i][j]>0)Maxn+=map[i][j];
        }
    printf("%.4lf\n",binary(0,Maxn));
    return 0;
}
冒险岛 Docker 是一个基于 Docker 技术构建的容器化环境,用于运行冒险岛私服服务器。Docker 是一个开源的容器化平台,可以将应用程序及其依赖项打包到一个独立的容器中,以实现快速部署和可移植性。 使用冒险岛 Docker,您可以轻松地创建、启动和管理冒险岛私服服务器。它提供了一个预配置的容器镜像,其中包含了冒险岛私服服务器所需的所有组件和依赖项。您只需要下载并运行这个容器镜像,即可快速搭建一个冒险岛私服服务器。 冒险岛 Docker 的优势包括: 1. 简化部署:使用容器化技术,可以快速部署冒险岛私服服务器,无需手动安装和配置各种依赖项。 2. 环境隔离:每个容器都是独立的,可以避免不同应用程序之间的冲突和干扰。 3. 可移植性:容器可以在不同的环境中运行,无论是开发、测试还是生产环境,都可以保持一致的运行结果。 4. 扩展性:可以根据需要创建多个容器实例,以实现负载均衡和高可用性。 使用冒险岛 Docker,您可以通过以下步骤来搭建冒险岛私服服务器: 1. 安装 Docker:首先需要在您的服务器上安装 Docker。 2. 下载容器镜像:从 Docker Hub 上下载冒险岛 Docker 容器镜像。 3. 运行容器:使用下载的容器镜像创建并运行一个容器实例。 4. 配置服务器:根据您的需求,对容器中的冒险岛私服服务器进行配置。 5. 启动服务器:启动冒险岛私服服务器,并进行必要的测试和调试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值