洛谷P8888(吉利题) 实验基地

今天来水一期吉利题。

提醒一下,虽然编号很吉利,但内容可不吉利,做好心理准备!!!

题目背景

小 A 和小 B 用实验基地全新的装备进行了一场世纪蒟蒻之战。

题目描述

众所周知,实验基地的武器都是一次性的。现在,小 A 选取了 n 把不同的武器,小 B 也获取了 m 把不同武器。每个人的武器都可以用编号 11 到编号n或m依次表示,他们将会按此顺序逐个使用武器。

实验仓库记录了所有武器的火力。小 A 的第 k 把武器能爆发出 ak​ 的能量,而小 B 的第 k 把武器能爆发出 bk​ 的能量。特别的,当小 A 的第 i 把武器与小 B 的第 j 把武器同时使用,会释放di,j​ 的能量。由于某些不可描述的组合的奇效,a,b,d 都可能小于 00。

当某人第一个使用了武器,战斗就正式开始,记为第 11 秒,直至某人使用完武器后再无人使用武器,记此时为第 t 秒(t 不为输入数据)。也就是说,在第 11 秒和第 t 秒必须有人使用武器,而在 11 至 t 秒内在符合其他条件下,每一秒双方可以选择按顺序使用武器或不使用

为了避免打死对方,双方都不一定使用完武器

由于实验基地有发电装置,如果小 A 没有连续使用武器释放能量,而是休息了x 秒,那么祂将会吸收掉 Ax+B (A,B∈N) 的能量。同样,小 B 间隔 y 秒将吸收Cy+D (C,D∈N) 的能量。连续两秒都释放武器间隔时间为 00 秒,以此类推。

为了防止基地被核爆,你需要算出战斗结束后可能释放的最大总能量(可能为负数)。

若对题目细节有疑惑请先读提示内的额外解释。

输入格式

第一行有两个数n 和m。

第二行有 n 个数,第 k 个数字即 ak​。

第三行有 m 个数,第 k 个数字即 bk​。

接下来 n 行,每行 m 个数字,其中第 i 行第 j 列表示的是 di,j​。

最后一行有四个非负整数 A,B,C,D。

输出格式

只有一行,输出一个数字,即最大可能能量。

输入样例1

7 6
1 9 1 9 8 1 0
1 1 4 5 1 4
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 0 1 0

输出样例1

45

输入样例2

4 4
-2 -2 -2 -2
2 3 4 9
4 -2 0 4
0 0 0 0
-1 0 1 0
0 0 2 0
1 2 1 0

输出样例2

15

说明/提示

  1. 战斗的开始时间(第 11 秒)为双方某人最先释放出第一个技能的时间,战斗结束时间为双方某人释放出最后一个技能的时间。结束时间不定

  2. 技能必须按顺序释放,但不一定需要在战斗中释放完

  3. a,b,d 可以为负数,总计能量可能为负,“吸收能量”指总能量减少Ax+B 或 Cy+D,也就是间隔时总能量一定减少,而且时间越长减少越多。

  4. 本题 IO 量较大,建议使用合适的读入方式。

样例解释:

样例 1:每个人在 11 到 66 秒依次使用自己的编号为 11 到 66 的武器即可取到最大值。

样例 2:小 B 在 11 到 44 秒依次使用自己的编号为 11 到 44 的武器,小 A 在第 44 秒使用自己的 11 号武器可以取到最大值。其中单个武器释放的能量为 (−2)+(2+3+4+9)=16,武器碰撞释放 d_{1,4}​=4 单位的能量,小 A 在前 33 秒吸收了 A×3+B=5 单位的能量。

数据范围:

Subtaskn≤m≤分值
11101010102020
225005005005003030
3330003000300030005050

本题采用捆绑测试,您只有通过了一个 Subtask 中的所有测试点才能得到这个 Subtask 的分数。

对于 100% 的数据:0≤∣a_k∣,∣b_k∣,∣f_{i,j}∣,A,B,C,D≤1000, 1≤n,m≤3000。

解析:

由于吸收的能量与休息时间成一次函数关系,时间一维其实可以薅掉。

dp_{i,j,0/1,0/1}表示小A 用了i 把武器,小B 用了 j 把武器。后面两维分别表示当前时刻小 A 是 / 否使用了武器,当前时刻小 B 是 / 否使用了武器。

其他的贡献的计算都很简单,主要是能量吸收量的计算。以小 A 为例。

先考虑 B=0 的情况。

若小 A 当前时刻没有使用武器。小 A 的休息时间相当于多了 11 个单位时间,那么他就会再吸收 A 的能量。

直接在转移的时候减去 A 就好。

但是 B\neq 0怎么办?

发现加吸收B 的能量的次数与休息的次数是一致的,我们在转移的时候可以钦定一个规则:当上一时刻使用了武器,但是当前时刻没有使用武器,那么小A 的休息次数就会加 11,此时就减去 B。

剩下的就是代码了!

不准直接抄!!!

#include<bits/stdc++.h>
#define MAXN 3001
#define INF 0x3f3f3f3f
using namespace std;
int n, m, A, B, C, D;
int a[MAXN], b[MAXN], d[MAXN][MAXN];
int dp[MAXN][MAXN][2][2];
inline int read(){
   int s = 0, w = 1;
   char ch = getchar();
   while(ch < '0' || ch > '9'){ if(ch == '-') w = -1; ch = getchar(); }
   while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
   return s * w;
}
int main(){
    
    n = read(); m = read();
    for(int i = 1; i <= n; i++) a[i] = read(); 
    for(int i = 1; i <= m; i++) b[i] = read(); 
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            
            d[i][j] = read();
        }
    }
    scanf("%d%d%d%d",&A,&B,&C,&D);
    memset(dp, -0x3f, sizeof(dp));
    dp[1][0][1][0] = a[1] - C - D;
    dp[0][1][0][1] = b[1] - A - B;
    dp[1][1][1][1] = a[1] + b[1] + d[1][1];
    for(int i = 0; i <= n; i++){
        for(int j = 0; j <= m; j++){
            if(i != 0){
                // dp[i][j][1][0];
                dp[i + 1][j][1][0] = max(dp[i + 1][j][1][0], dp[i][j][1][0] + a[i + 1] - C);
                dp[i][j + 1][0][1] = max(dp[i][j + 1][0][1], dp[i][j][1][0] + b[j + 1] - A - B);
                dp[i + 1][j + 1][1][1] = max(dp[i + 1][j + 1][1][1], dp[i][j][1][0] + a[i + 1] + b[j + 1] + d[i + 1][j + 1]);
            }
            if(j != 0){
                // dp[i][j][0][1];
                dp[i + 1][j][1][0] = max(dp[i + 1][j][1][0], dp[i][j][0][1] + a[i + 1] - C - D);
                dp[i][j + 1][0][1] = max(dp[i][j + 1][0][1], dp[i][j][0][1] + b[j + 1] - A);
                dp[i + 1][j + 1][1][1] = max(dp[i + 1][j + 1][1][1], dp[i][j][0][1] + a[i + 1] + b[j + 1] + d[i + 1][j + 1]);
            }
            if(i != 0 && j != 0){
                // dp[i][j][1][1];
                dp[i + 1][j][1][0] = max(dp[i + 1][j][1][0], dp[i][j][1][1] + a[i + 1] - C - D);
                dp[i][j + 1][0][1] = max(dp[i][j + 1][0][1], dp[i][j][1][1] + b[j + 1] - A - B);
                dp[i + 1][j + 1][1][1] = max(dp[i + 1][j + 1][1][1], dp[i][j][1][1] + a[i + 1] + b[j + 1] + d[i + 1][j + 1]);
            }
        }
    }
    int ans = -INF;
    for(int i = 0; i <= n; i++){
        for(int j = 0; j <= m; j++){
            ans = max(ans, dp[i][j][1][0]);
            ans = max(ans, dp[i][j][0][1]);
            ans = max(ans, dp[i][j][1][1]);
        }
    }
    printf("%d\n",ans);
    
    return 0;
}

 Ladies and gentlemen,赶紧用你发财的小手点个赞吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/431717.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

静态时序分析:SDC约束命令set_disable_timing详解

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 目录 指定对象列表 指定源、目的引脚 指定恢复 简单使用 写在最后 上一章中&#xff0c;我们学习了如何使用set_case_analysis模式分析命令&#xff0c;它通过指定某个端口或引脚为固定值&…

B3619 10 进制转 x 进制

题目描述 给定一个十进制整数 n 和一个小整数 x。将整数 n 转为 x 进制。对于超过十进制的数码&#xff0c;用 A&#xff0c;B ... 表示。 输入格式 第一行一个整数 n&#xff1b; 第二行一个整数 x。 输出格式 输出仅包含一个整数&#xff0c;表示答案。 输入输出样例 …

三星成功研发出业界首款12层堆叠HBM3E

三星电子有限公司成功研发出业界首款12层堆叠HBM3E DRAM——HBM3E 12H&#xff0c;这是迄今为止容量最大的HBM产品。这款新型HBM3E 12H内存模块提供了高达1,280GB/s的史上最高带宽&#xff0c;并拥有36GB的存储容量&#xff0c;相较于之前的8层堆叠HBM3 8H&#xff0c;在带宽和…

鸿蒙 Stage模型-应用组件-配置、UIAbility

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 一、概念 可以看到分为运行期、编译器&#xff0c;主要关注UIAbility&#xff08;类似Activity&#xff0c;UI相关&#xff0…

MySQL面试题纯享版

基础内容 1、MySQL的架构分层 2、一条 SQL 查询语句的执行流程 3、如何查看 MySQL 服务被多少个客户端连接了&#xff1f; 4、 空闲连接会一直占用着吗&#xff1f; 5、MySQL 的连接数有限制吗&#xff1f; 6、 怎么解决长连接占用内存的问题&#xff1f; 7、执行器与存储引擎…

AI大模型让你体验未来科技之美

在未来的世界里&#xff0c;AI大模型扮演着越来越重要的角色&#xff0c;它们不仅可以让我们感受到科技之美&#xff0c;更能够改变我们的生活方式和工作方式。通过AI大模型的运用&#xff0c;我们可以实现无人驾驶汽车、智能家居、智能医疗等各种领域的创新应用。 首先说到无…

Android:BitmapFactory.decodeStream Bitmap的内存优化OutOfMemory异常以后Crash闪退

自己项目中使用如下方法&#xff0c;有的手机上会奔溃报错&#xff0c;原因是BitmapFactory.decodeStream部分没有使用options参数改变内存大小 改成如下形式后正常了&#xff1b;正确解决方案&#xff1a;设置inSampleSize 一&#xff09;Android BitmapFactory.decodeStream(…

网工内推 | 国企运维,年薪最高30W,RHCE认证优先

01 上海华力微电子有限公司 招聘岗位&#xff1a;系统运维资深/主任工程师 职责描述&#xff1a; 1、负责IT基础设施&#xff08;包括服务器、存储、中间件等系统基础技术平台&#xff09;的设计建设和日常运维管理&#xff1b; 2、负责生产、开发和测试环境的技术支持&#x…

LeetCode刷题小记 七、【二叉树(一)】

1.二叉树 文章目录 1.二叉树写在前面1.1二叉树理论基础1.2二叉树的递归遍历1.3二叉树的迭代遍历1.4二叉树的统一迭代法1.5二叉树的层序遍历1.6翻转二叉树1.7对称二叉树1.8二叉树的最大深度1.9二叉树的最小深度1.10完全二叉树的节点个数1.11平衡二叉树1.12二叉树的所有路径1.13左…

2024年软考-官方最新考试安排出来了,软考新调整,很重要,但也很惹人气愤

官方最新通知&#xff0c;关于2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作计划 笔试改机考后&#xff0c;必然会迎来调整&#xff0c;但有点让人费解。 这次调整变动主要是每年考试的次数调整&#xff0c;很多改为了一年一考&#xff0c;具体…

宠物的异味,用空气净化器可以解决吗?宠物空气净化器品牌推荐

养猫的人都了解&#xff0c;一个养猫家庭的环境卫生和气味问题与主人的关系密切相关。主人的勤劳程度和对卫生的重视程度直接影响着家中的气味。尽管主人通常会经常更换猫砂&#xff0c;但有时候仍然会存在一些难闻的气味。事实上&#xff0c;忙碌的猫主人可能会因为没有足够的…

安装RabbitMQ及配置Centos7 方式(2)

1、背景需求 自行搭建学习参考使用&#xff0c;这里采用的Centos7 方式&#xff0c;这已经是多年前的方式了&#xff0c;现在主流方式是容器化安装、部署&#xff0c;docker、ks8&#xff0c;同学们可自行去学习参考。 2、搭建环境 环境&#xff1a;centos7 、otp_src_21.3、…

Day09:基础入门-算法逆向散列对称非对称JS源码逆向AESDESRSASHA

目录 算法加密-概念&分类&类型 加密解密-识别特征&解密条件 解密实例-密文存储&数据传输 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&am…

(二)数据库系统的结构抽象与演变

待补充 2.1三层模式与两层映像&#xff0c;物理独立性和逻辑独立性 从数据角度可以分为三层视图模式默认指的是全局模式&#xff0c;视图默认指的是外部视图 一个数据库只有一个内模式 DBMS要让用户定义三层模式&#xff0c;程序自动地实现两层映像 。 2.2数据→模式→数据模型…

C#程序模块的封装

文章目录 一、简单认识程序模块的封装1.1什么情况下使用封装&#xff1f;1.2 具体的例子 二、实际当中的程序封装的应用DLL的主要特点和用途&#xff1a;如何在C#中创建和使用DLL&#xff1a; 一、简单认识程序模块的封装 在C#中&#xff0c;程序模块的封装&#xff08;Encaps…

数据结构中红黑树的概念以及代码

红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;它在插入和删除节点时通过一系列的旋转和重新着色操作来保持平衡。红黑树的平衡性质使得它的查找、插入和删除操作的时间复杂度都能保持在 O(log n) 红黑树的定义如下&#xff1a; 每个节点要…

qt cmake添加resource文件

文章目录 方式一:方式二:qrc的使用 两种方式 方式一: 创建一个qrc文件&#xff0c;在qt_add_executable 中直接添加 qt_add_executable(helloworldmain.cppimageresources.qrc )方式二: 使用 qt_add_resources qt_add_resources(helloworld "app_images"PREFIX &…

dolphinscheduler海豚调度(四)钉钉告警

在之前的博文中&#xff0c;我们已经介绍了DolphinScheduler海豚调度的基本概念和工作流程&#xff0c;以及Shell任务和SQL任务的实践。今天&#xff0c;让我们来学习DolphinScheduler中的另一个重要功能&#xff1a;钉钉告警。 钉钉群添加机器人 在钉钉群添加机器人&#xf…

三国野史秘闻翻译视频剪辑 条条爆品 一条视频增粉1w (附888G素材内容)

我将为大家分享一个全新的主题——三国野史秘闻。这个主题本身就充满了趣味性&#xff0c;再加上我们独特的解读&#xff0c;由于粉丝们对此类内容非常热衷&#xff0c;因此很容易在评论区引发热烈讨论&#xff0c;这使得我们的短视频有很大的机会在抖音上走红。 项目 地 址 &…

基于springboot的学生网上请假系统设计与实现论文

学生网上请假系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了学生网上请假系统的开发全过程。通过分析学生网上请假系统管理的不足&#xff0c;创建了一个计算机管理学生网上请假系统的方案。文章介绍了学…