CF1955H.The Most Reckless Defense

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你正在玩一款非常流行的塔防游戏“Runnerfield 2”。在这款游戏中,玩家需要布置防御塔来攻击从起点移动到玩家基地的敌人。

给定一个 n×mn \times m 的网格,其中已经放置了 kk 个防御塔,并且有一条敌人会经过的路径。第 xx 行第 yy 列的格子记作 (x,y)(x, y)。

每秒钟,每个防御塔会对其攻击范围内的所有敌人造成 pip_i 点伤害。例如,如果敌人在格子 (x,y)(x, y),而防御塔在 (xi,yi)(x_i, y_i),攻击范围为 rr,那么如果满足 (x−xi)2+(y−yi)2≤r2(x - x_i)^2 + (y - y_i)^2 \le r^2,敌人就会受到 pip_i 点伤害。

敌人会从格子 (1,1)(1, 1) 移动到格子 (n,m)(n, m),并且会恰好经过路径上的每个格子一次。敌人每次可以瞬间移动到相邻的水平或垂直格子,但在移动之前,会在当前格子停留一秒。如果在这一秒内敌人的生命值降为零或更低,则无法继续移动。如果敌人到达 (n,m)(n, m) 并且还能再移动一次,则玩家失败。

默认情况下,所有防御塔的攻击范围为零,但玩家可以将某个防御塔的攻击范围设置为整数 rr(r>0r > 0),此时所有敌人的生命值会增加 3r3^r。但是,每个 rr 最多只能被一个防御塔使用。

假设敌人的基础生命值为 hh。如果防御塔的攻击范围分别为 22、44 和 55,那么敌人在路径开始时的生命值为 h+32+34+35=h+9+81+243=h+333h + 3^2 + 3^4 + 3^5 = h + 9 + 81 + 243 = h + 333。攻击范围的选择在敌人出现前一次性确定,游戏开始后不能更改。

请你求出能够设置攻击范围,使得敌人以基础生命值 hh 通过(不考虑因设置攻击范围而增加的生命值)且玩家不会失败的最大 hh。

如果即使敌人基础生命值为 11 也无法获胜,则输出 00。

输入格式

第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例数量。

每个测试用例的第一行包含三个整数 nn、mm 和 kk(2≤n,m≤50,1≤k<n⋅m2 \le n, m \le 50, 1 \le k < n \cdot m),表示场地的尺寸和防御塔数量。

接下来 nn 行,每行包含 mm 个字符,描述场地的每一行,其中字符“.”表示空格子,字符“#”表示敌人会经过的路径格子。

接下来 kk 行,每行包含三个整数 xix_i、yiy_i、pip_i(1≤xi≤n,1≤yi≤m,1≤pi≤5001 \le x_i \le n, 1 \le y_i \le m, 1 \le p_i \le 500),表示防御塔的坐标和攻击参数。所有坐标均对应于场地上的空格子,且所有 (xi,yi)(x_i, y_i) 两两不同。

保证所有测试用例中 n⋅mn \cdot m 的总和不超过 25002500。

输出格式

对于每个测试用例,输出一个整数,表示能够设置攻击范围,使得敌人以基础生命值 hh 通过且玩家不会失败的最大 hh(不考虑因设置攻击范围而增加的生命值)。

如果即使敌人基础生命值为 11 也无法获胜,则输出 00。

输入输出样例

  • 输入#1

    6
    2 2 1
    #.
    ##
    1 2 1
    2 2 1
    #.
    ##
    1 2 2
    2 2 1
    #.
    ##
    1 2 500
    3 3 2
    #..
    ##.
    .##
    1 2 4
    3 1 3
    3 5 2
    #.###
    #.#.#
    ###.#
    2 2 2
    2 4 2
    5 5 4
    #....
    #....
    #....
    #....
    #####
    3 2 142
    4 5 9
    2 5 79
    1 3 50

    输出#1

    0
    1
    1491
    11
    8
    1797

说明/提示

在第一个样例中,增加防御塔的攻击范围没有意义,即使敌人只有 11 点生命值也无法击败。

在第二个样例中,防御塔的攻击范围为 11,它会在 (1,1)(1, 1) 和 (2,2)(2, 2) 两个格子对敌人造成伤害。

在第三个样例中,防御塔的攻击范围为 22,它会在所有路径格子对敌人造成伤害。如果敌人的基础生命值为 14911491,那么加上攻击范围带来的生命值后为 1491+32=15001491 + 3^2 = 1500,正好等于防御塔在三秒内对敌人造成的伤害。

在第四个样例中,(1,2)(1, 2) 处的防御塔攻击范围为 11,(3,1)(3, 1) 处的防御塔攻击范围为 22。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页