寻宝游戏 HDU - 6289 (DP)

CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04 在 ubuntu14 系统上面安装 CSI Tools,2020最新教程,亲测可用,只要保证和我做法一致绝对可以安装好。 阅读详情

小Q最近迷上了一款寻宝游戏,这款游戏中每局都会生成一个n×mn×m的网格地图,从上往下依次编号为第11行到第nn行,从左往右依次编号为第11列到第mm列。每个格子上都有不同数量的金币,第ii行第jj列的格子上的金币数量为ai,jai,j。 

小Q一开始位于(1,1)(1,1),每次他可以往右或者往下走,每当他经过某个格子时,他就可以拿走这个格子上的所有金币。小Q不能走出这个地图,当小Q不能再行动时,游戏结束。显然当且仅当小Q位于(n,m)(n,m)时,游戏才会结束。 

一轮游戏的得分为这一轮中收集到的金币总量,而在游戏开始前,因为小Q是超级VIP用户,所以他有kk次机会交换某两个格子中的金币数。这kk次机会不一定要用完,请写一个程序帮助小Q在一轮内拿到尽可能多的金币。

Input

第一行包含一个正整数T(1≤T≤10)T(1≤T≤10),表示测试数据的组数。 

每组数据第一行包含三个整数n,m,k(2≤n,m≤50,0≤k≤20)n,m,k(2≤n,m≤50,0≤k≤20),分别表示地图的长宽以及交换的次数。 

接下来nn行,每行mm个整数ai,j(0≤ai,j≤106)ai,j(0≤ai,j≤106),依次表示每个格子中金币的数量。

Output

对于每组数据,输出一行一个整数,即能收集到的金币数量的最大可能值。

Sample Input

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

Sample Output

34
81
#include<iostream>
using namespace std;
inline bool cmp(int x,int y){
    return x>y;
}
const int max1=55;
const int max2=25;
const int inf=0x3f3f3f3f;
int n,m,k;
int dp[max1][max1][max2][max2];
int a[max1][max1];
int tot;
int b[max1];
int main(){
    int t;
    cin>>t;
    while(t--){
        memset(dp,-0x3f,sizeof(dp));
        cin>>n>>m>>k;
        for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j];
        dp[0][0][0][0]=a[0][0];
        dp[0][0][0][1]=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(i==0&j==0) continue;
                tot=0;
                if(i) for(int y=j+1;y<m;y++) b[tot++]=a[i-1][y];
                for(int x=0;x<j;x++) b[tot++]=a[i][x];
                sort(b,b+tot,cmp);
                for(int used=0;used<=k;used++){
                    for(int bal=0;bal<i+j+1&&bal<=k;bal++){
                        int ans=-inf;
                        if(i){
                            ans=max(ans,dp[i-1][j][used][bal]+a[i][j]);
                            if(bal) ans=max(ans,dp[i-1][j][used][bal-1]);
                            int sum=0;
                            int it=0;
                            for(int cntuse=1;cntuse<=k&&cntuse<=tot;cntuse++){
                                sum+=b[it++];
                                ans=max(ans,dp[i-1][j][used-cntuse][bal]+sum+a[i][j]);
                                if(bal) ans=max(ans,dp[i-1][j][used-cntuse][bal-1]+sum);
                            }
                        }
                        if(j){
                            ans=max(ans,dp[i][j-1][used][bal]+a[i][j]);
                            if(bal) ans=max(ans,dp[i][j-1][used][bal-1]);
                        }
                        dp[i][j][used][bal]=ans;
                    }
                }
            }
        }
        int ans=0;
        for(int i=0;i<=k;i++){
            ans=max(ans,dp[n-1][m-1][i][i]);
        }
        cout<<ans<<endl;
    }
    return 0;
}

12、控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示 控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示1、用到的控件2、添加控件2.1、添加【文本录入】控件2.1、添加【文本显示】控件2.1、添加【QR 二维码】控件3、保存工程及生成文件4、下载文件 1、用到的控件   需要用的显示控件为【文本显示】控件和【QR二维码】控件,以及触控控件【文本录入】控件。 2、添加控件 2.1、添加【文本录入】控件   【文本录入】控件也叫【ASCI 文本录入】,是用来录入ASCI 字符,打开 DGUS 软件,点击【触控控件】—【文本录入】,用鼠标框选一个区域,即可在右 阅读详情

相关推荐

【Java微服务-医疗管理项目】(附源码+资料+教程)

尚医疗是专门为各大医院、门诊提供的一款医疗管理平台。 系统包含:系统管理、药品进销存管理、看病就诊、收费管理、检查管理、数据统计等核心模块。 通过尚医疗系统可以快速、方便的管理病人从挂号到门诊结束所涉及到的全套流程。也可以清晰明了的体现出药品进货、出售的所有记录。.........

m0_72882572的博客 2203

2.8 算法一题

谷爱凌nb! 这题太简单了,直接粘贴代码了 /* 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。 你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。 请问如何走才能拿到最多的金币 3 1 3 3 2 2 2 3 1 2 11 */ #include<iostream> using namespace std; const int N=1005; int map[N][N]; int dp[N][N]; int n; i.

m0_52860713的博客 1532

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 340

迷宫寻宝路线

迷宫寻宝路线

panpanpan17452的博客 415

2021年J题:基于STM32F103的周期信号波形识别与参数测量系统设计(立创EDA+SZPT_ZXL)

本文详细复盘了2021年全国大学生电子设计竞赛J题获奖项目,手把手教你如何基于STM32F103微控制器设计并实现周期信号波形识别与参数测量系统。文章深入剖析了硬件电路设计(包括程控放大、工作点抬升与滞回比较器)与核心软件算法(如动态采样、FFT频谱分析与波形识别逻辑),并分享了DMA传输、FFT库使用等实战要点与避坑指南,为嵌入式信号处理与电赛备赛提供了宝贵经验。

weixin_32673065的博客 228

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 308

Q - 迷宫寻宝

洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入口、一些墙壁以及一个宝藏。由于迷宫是四连通的,即在迷宫中的一个位置,只能走到与它直接相邻的其他四个位置(上、下、左、右)。现洪尼玛在迷宫的入口处,问他最少需要走几步才能拿到宝藏?若永远无法拿到宝藏,则输出-1。 Input 多组测试数据。 每组数据输入第一行为正整数n,表示迷宫大小。 接下来n行,每行包括n个字符,其中字符’.‘表示该位置为空地,字符’#'表示该位置为墙壁,字符’S’表示该位置为入口,字符’E’表示该位置为宝藏,输入数

p15008340649的博客 297

别再搞混了!用示波器实测SVPWM:相电压、线电压、端电压波形到底长啥样?(附TI/ST官方笔记解读)

本文详细解析了SVPWM波形实测中的相电压、线电压和端电压的区别与测量技巧,结合TI/ST官方笔记,揭示了马鞍形波形的形成原理及常见误区。通过示波器实测案例,帮助电力电子工程师准确理解并应用这些关键概念,提升电机控制系统的调试效率。

weixin_30632883的博客 433

有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。

蓝桥杯 走方格取最多金币

Atututuyao的博客 2226

YOLOv8多传感器融合技术——毫米波雷达融合技术详解

本文介绍了YOLOv8与毫米波雷达融合技术在自动驾驶系统中的应用。毫米波雷达具有全天候工作、测距测速精准等优势,但存在分辨率低等局限。通过融合YOLOv8的视觉检测能力,可显著提升系统在恶劣环境下的感知性能。文章详细阐述了融合实现方法,包括雷达数据处理、目标投影匹配、置信度融合等关键技术,并提供了评估指标和应用场景分析。这种多传感器融合方案能有效弥补单一传感器的不足,为自动驾驶提供更可靠的环境感知能力,是实现高级别自动驾驶的重要技术支撑。

u010117029的博客 174

C#上位机与西门子PLC全链路通信实战教程:数据采集+SQL存储+数据库报表查询+报警历史完整实现

在工业自动化领域,西门子PLC(S7-200Smart/1200/1500)凭借稳定的性能、强大的功能、完善的生态,稳居工业控制器的主流地位;而凭借开发效率高、界面美观、兼容性强、数据库操作便捷的优势,成为工业上位机开发的首选编程语言。二者的组合,是目前制造业、自动化产线、智能仓储、暖通自控等场景的绝对主流方案,也是工业上位机工程师必须吃透的核心技术栈。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1863

小明的挖矿之旅

2018年全国多校算法寒假训练营练习比赛(第四场)链接:https://www.nowcoder.net/acm/contest/76/D来源:牛客网题目描述    这个挖矿游戏会给出一个n*m个格子的地图,每个格子都有黄金。在游戏开始时小明会随机出现在地图的某一个格子当中。小明可以将他所在的格子的黄金收归囊中,并且还可以向下或者向右移动,然后继续收集黄金。地图上某些格子是障碍物,小明不能移动到有...

一定要站在自己热爱的生活里闪闪发光 3万+

5. SAP UI5 视图控制器(Controller)初探

本教程的前一个步骤也就是第四个步骤,我们了解了 SAP UI5 XML 视图的使用方法。在该步骤里,我们在 XML 视图里声明了一个 Text 控件实例,该控件位于 sap.m 这个命名空间内。 本步骤会继续接触 SAP UI5 MVC 框架中三大基石的另一块:C - Controller,即控制器。 先看看本步骤完成之后,我们得到的 SAP UI5 应用能实现一个什么样的效果。 访问如下 url: http://localhost:8080/webapp/index.html 能看到一个 Say Hell

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4595

hdu-6289 寻宝游戏 dp

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6289   题意:        给你n*m的格子,每个格子上有一个值,现在你在(1,1),你只能往下和往右走一直到(n,m),并获得经过的路上的格子的值,你现在有k次机会可以交换两个不同格子上的权值,问你最后能获得的最大值为多少。   做法:        dp,真的不是很好想啊....就...

人生如戏 489

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU - 6289 寻宝游戏 详解(DP)

—————— 寻宝游戏 小Q最近迷上了一款寻宝游戏,这款游戏中每局都会生成一个n×m的网格地图,从上往下依次编号为第1行到第n行,从左往右依次编号为第1列到第m列。每个格子上都有不同数量的金币,第i行第j列的格子上的金币数量为ai,j。 小Q一开始位于(1,1),每次他可以往右或者往下走,每当他经过某个格子时,他就可以拿走这个格子上的所有金币。小Q不能走出这个地图,当小Q不能再行动时,...

Sega_hsj 's Blog 1605

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

hdu 6289 寻宝游戏

寻宝游戏Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)Total Submission(s): 165    Accepted Submission(s): 34Problem Description小Q最近迷上了一款寻宝游戏,这款游戏中每局都会生成一个n×m的网格地图,从上...

passer__的博客 1158

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU - 6289 寻宝游戏

题意 给你n*m的格子,每个格子上有一个值,现在你在(1,1),你只能往下和往右走一直到(n,m),并获得经过的路上的格子的值,你现在有k次机会可以交换两个不同格子上的权值,问你最后能获得的最大值为多少。 思路 (这部分是我的思考过程建议直接跳过) 首先很容易看出是一道DP题,用dp[i][j]表示在i,j处可以获得的最大值,问题在于如何维护好k次的交换,观察后发现数据量都非常小,可以考虑很暴力的多维dp转移,考虑如何记录当前状态先想到加一维k,dp[i][j][k]表示在(i,j)处交换了k次,但是我们

qq_45984015的博客 349

HDU 6289 DP

题目链接题意:给一个n*m的矩阵,矩阵的每一个点上都有一个权值。现在你可以从(1,1)开始每次只能向下或向右走求最终到达(n,m)的时候可以获得的最大值。此题在此基础上再加一个难度,你可以有k次交换机会交换任意两点上的权值。思路:定义DP[i][j][p][q]表示到点(i,j)所经过的路径上有p个物品没捡,在没经过的路径上捡了q个物品。状态转移方程:dp[i][j][p][q] = max ( ...

maze_illusion的博客 682

寻宝游戏,五维dp

小Q最近迷上了一款寻宝游戏,这款游戏中每局都会生成一个n×m的网格地图,从上往下依次编号为第1行到第n行,从左往右依次编号为第1列到第m列。每个格子上都有不同数量的金币,第i行第j列的格子上的金币数量为ai,j。小Q一开始位于(1,1),每次他可以往右或者往下走,每当他经过某个格子时,他就可以拿走这个格子上的所有金币。小Q不能走出这个地图,当小Q不能再行动时,游戏结束。显然当且仅当小Q位于(n,m)时,游戏才会结束。

Landing_on_Mars的博客 224

HDU 6289 寻宝游戏

题目 看了题解才会写的题,而且题解和标称x和y的含义略有出入,看了巨久才看明白。 f[i][j][x][y]表示到达第i行第j列时路径内有x个没取,路径外有y个东西取了的可以达到的最大值。 然后向右向下转移即可,需要注意的是向右转移可以直接转移,但是向下转移时还需要考虑当前行左边未访问的格子和下一行当前列之前未访问的格子,需要进行预处理。 代码 #include&lt;iostream...

oidoidoid的博客 555

"字节跳动杯"2018中国大学生程序设计竞赛-女生专场题解

以下所有AC题解程序来自“仙客传奇”团队。 A. 口算训练 B. 缺失的数据范围 AC的C++语言程序: #include<iostream> #include<cstdio> #include<string> #include<cmath> #include<cstring> #include<cstdlib> usin...

海岛Blog 1087

蓝桥杯-拿金币(java)

问题描述 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。 输入格式 第一行输入一个正整数n。   以下n行描述该方格。金币数保证是不超过1000的正整数。 输出格式 最多能拿金币数量。 样例输入 3 1 3 3 2 2 2 3 1 2 样例输出 11 我的思路: 就dp硬写。 代码: package LanQiao; import java.io.BufferedInp

Kkooe的博客 1282

202206-2 寻宝大冒险

题目背景 暑假要到了。可惜由于种种原因,小 P 原本的出游计划取消。失望的小 P 只能留在西西艾弗岛上度过一个略显单调的假期……直到……某天,小 P 获得了一张神秘的藏宝图。

victory066的博客 1819

【2023-03-11】美团春招笔试五道编程题

【2023-03-11】美团春招笔试五道编程题

试问道几许 4177

Java后端之美团笔试题

Java后端之美团笔试题

qq_45915803的博客 2140

2021牛客寒假第六场 网格 (dp)

题目链接:点击这里 题目大意: 有一个 n×mn \times mn×m 列的网格,第 i 行 j 列上有数字 ai,ja_{i,j}ai,j​,每个位置需要从上下左右四个方向中选择互相垂直的两个 定义 w(x)=x+popcnt(x)w(x)=x+popcnt(x)w(x)=x+popcnt(x) ,其中 popcnt(x)popcnt(x)popcnt(x) 表示 xxx 的二进制位中 111 的位的数量 两个互相位于对方选择的某个方向上的相邻的位置 (x1,y1),(x2,y2)(x_1,y_1),(

羊驼的博客 665
上一篇: Twin Prime Conjecture HDU - 3792
下一篇: 六度分离 HDU - 1869 (Floyd)
郭晋龙
博客等级 码龄6年 940粉丝 449原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晋龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值