当前位置: 首页 > news >正文

[NOIP2007]矩阵取数游戏

点我写题

题目描述 

帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。游戏规则如下:
1.每次取数时须从每行各取走一个元素,共n个。m次后取完矩阵所有元素;
2.每次取走的各个元素只能是该元素所在行的行首或行尾;
3.每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值 * 2i,其中i表示第i次取数(从1开始编号);
4.游戏结束总得分为m次取数得分之和。
帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。

示例1

输入

复制

2 3
1 2 
3 4 2

输出

复制

82

思路:容易观察到,每列可以单独考虑,即局部最优解能构成全局最优解,设dp[i][t][k]表示,n*m的矩阵中,第i行元素,到第t轮选元素,前面选了k个的最大值。

转移:考虑当前轮是选前面的还是选后面的,选前面的,就是dp[i][t][k]=dp[i][t-1][k-1]+a[k]*(2^t),选后面的dp[i][t][k]=dp[i][t-1][k]+a[m-(t-k)+1]*(2^t)(即前面选k个后面就该选了t-k个了)。

ps:这里还硬缝合了个高精度,但是java用BigInteger就能过,java果然是世界上最好的语言,(bushi~)。

纠错:牛客空间比较大三维dp能过,但是洛谷只能俩维,把没用的那维去掉就好了然后加个初始化。

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner s=new Scanner(System.in);int n=s.nextInt(),m=s.nextInt();int a[][]=new int [n+10][m+10];BigInteger mul[]=new BigInteger [m+10];mul[0]=BigInteger.valueOf(1);for(int i=1;i<=m;i++) mul[i]=mul[i-1].multiply(BigInteger.valueOf(2));for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {a[i][j]=s.nextInt();}}BigInteger ans=BigInteger.valueOf(0);for(int i=1;i<=n;i++) {BigInteger res=BigInteger.valueOf(0);BigInteger dp[][]=new BigInteger [m+10][m+10];for(int j=0;j<=m;j++) {for(int k=0;k<=m;k++) {dp[j][k]=new BigInteger("0");}}for(int t=1;t<=m;t++) {for(int j=0;j<=t;j++) {dp[t][j]=dp[t-1][j].add(BigInteger.valueOf(a[i][m-(t-j)+1]).multiply(mul[t]));if(j>0) {BigInteger x=dp[t-1][j-1].add(mul[t].multiply(BigInteger.valueOf(a[i][j])));if(dp[t][j].compareTo(x)<0) dp[t][j]=x;}if(res.compareTo(dp[t][j])<0) res=dp[t][j];}}ans=ans.add(res);}System.out.print(ans+"\n");}}

相关文章:

[NOIP2007]矩阵取数游戏

点我写题 题目描述 帅帅经常跟同学玩一个矩阵取数游戏&#xff1a;对于一个给定的n*m的矩阵&#xff0c;矩阵中的每个元素aij均为非负整数。游戏规则如下&#xff1a; 1.每次取数时须从每行各取走一个元素&#xff0c;共n个。m次后取完矩阵所有元素&#xff1b; 2.每次取走的…...

在Linux系统上安装.NET

测试系统&#xff1a;openKylin(开放麒麟) 1.确定系统和架构信息&#xff1a; 打开终端&#xff08;Ctrl Alt T&#xff09;&#xff0c;输入cat /etc/os-release查看系统版本相关信息。 输入uname -m查看系统架构。确保你的系统和架构符合.NET 的要求&#xff0c;如果架构…...

PCB Editor层叠文件(Gerber文件输出-01)

先看底层和表层,如下图 钢网表层和底层,如下图 丝印表层和底层,如下图 阻焊表层和底层,如下图 下面来添加钻孔层,先提取钻孔表 点击OK后钻孔表会挂在鼠标上...

labelimg闪退的解决办法

其实就是你的python版本太高不稳定不支持labelimg 标记时出现闪退 问题原因&#xff1a;python版本过高 解决方案 第一步&#xff1a; 在python3.9以上的版本运行软件会闪退&#xff0c;这个时候我们需要创建一个3.9或者及以下的虚拟环境 conda cr…...

【开源免费】基于Vue和SpringBoot的在线文档管理系统(附论文)

本文项目编号 T 038 &#xff0c;文末自助获取源码 \color{red}{T038&#xff0c;文末自助获取源码} T038&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)

数据库管理287期 20245-01-24 数据库管理-第287期 Oracle DB 23.7新特性一览&#xff08;20250124&#xff09;1 AI向量搜索&#xff1a;算术和聚合运算2 更改Compatible至23.6.0&#xff0c;以使用23.6或更高版本中的新AI向量搜索功能3 Cloud Developer包4 DBMS_DEVELOPER.GET…...

Golang :用Redis构建高效灵活的应用程序

在当前的应用程序开发中&#xff0c;高效的数据存储和检索的必要性已经变得至关重要。Redis是一个快速的、开源的、内存中的数据结构存储&#xff0c;为各种应用场景提供了可靠的解决方案。在这个完整的指南中&#xff0c;我们将学习什么是Redis&#xff0c;通过Docker Compose…...

四层网络模型

互联网由终端主机、链路和路由器组成&#xff0c;数据通过逐跳的方式&#xff0c;依次经过每条链路进行传输。 网络层的工作是将数据包从源端到目的端&#xff0c;跨越整个互联网。 网络层的数据包称为数据报。网络将数据报交给链路层&#xff0c;指示它通过第一条链路发送数据…...

CUDA学习-内存访问

一 访存合并 1.1 说明 本部分内容主要参考: 搞懂 CUDA Shared Memory 上的 bank conflicts 和向量化指令(LDS.128 / float4)的访存特点 - 知乎 1.2 share memory结构 图1.1 share memory结构 放在 shared memory 中的数据是以 4 bytes(即 32 bits)作为 1 个 word,依…...

进程通讯——类型和发展

进程常用交互方法如上...

在 Windows 11 中为 SMB 3.x 文件共享协议提供 RDMA 支持

注&#xff1a;机翻&#xff0c;未校。 Enable SMB Direct in Windows 11 在 Windows 11 中启用 SMB Direct Provides RDMA support for the SMB 3.x file sharing protocol 为 SMB 3.x 文件共享协议提供 RDMA 支持 Vigneshwaran Vijayakumar November 3, 2024 Last Updat…...

C 标准库 - `<errno.h>`

C 标准库 - <errno.h> 引言 在C语言编程中,正确处理错误是保证程序稳定性和可靠性的关键。C标准库中的<errno.h>头文件提供了错误码定义和宏,使得开发者能够更好地管理和处理程序运行过程中可能出现的错误。本文将详细介绍<errno.h>头文件的作用、常用错…...

2025年01月28日Github流行趋势

项目名称&#xff1a;maybe 项目地址url&#xff1a;https://github.com/maybe-finance/maybe项目语言&#xff1a;Ruby历史star数&#xff1a;37540今日star数&#xff1a;1004项目维护者&#xff1a;zachgoll, apps/dependabot, tmyracle, Shpigford, crnsh项目简介&#xff…...

7. 马科维茨资产组合模型+金融研报AI长文本智能体(Qwen-Long)增强方案(理论+Python实战)

目录 0. 承前1. 深度金融研报准备2. 核心AI函数代码讲解2.1 函数概述2.2 输入参数2.3 主要流程2.4 异常处理2.5 清理工作2.7 get_ai_weights函数汇总 3. 汇总代码4. 反思4.1 不足之处4.2 提升思路 5. 启后 0. 承前 本篇博文是对前两篇文章&#xff0c;链接: 5. 马科维茨资产组…...

Android 启动流程

一 Bootloader 在嵌入式系统中&#xff0c;Bootloader的引导过程与传统的PC环境有所不同&#xff0c;主要是因为嵌入式系统的硬件配置和应用场景更加多样化。以下是嵌入式系统中Bootloader被引导的一般流程&#xff1a; 1. 硬件复位 当嵌入式设备上电或复位时&#xff0c;处…...

庆祝2025到来:C++编程的新篇章

作者&#xff1a;w(&#xff9f;Д&#xff9f;)w吓洗宝宝了 发布时间&#xff1a;2025年1月19日00:00 引言 新年伊始&#xff0c;万象更新。在这充满希望的2025年&#xff0c;我们迎来了新的机遇和挑战。作为C编程爱好者的一员&#xff0c;我感到无比激动和自豪。C作为一种强…...

基于STM32的智能家用温控器设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 温度监测模块自动加热与制冷模块用户交互与显示模块节能模式与定时功能模块远程控制与数据上传模块 控制算法 温度调节算法定时任务与节能优化算法数据记录与反馈算法 代码实现 温度监测与自动控制代码定时与节能模式代码数据…...

扣子平台音频功能:让声音也能“智能”起来。扣子免费系列教程(14)

在数字化时代&#xff0c;音频内容的重要性不言而喻。无论是在线课程、有声读物&#xff0c;还是各种多媒体应用&#xff0c;音频都是传递信息、增强体验的关键元素。扣子平台的音频功能&#xff0c;为开发者和内容创作者提供了一个强大而灵活的工具&#xff0c;让音频的使用和…...

Dismissible组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了GestureDetector Widget相关的内容,本章回中将介绍Dismissible Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的Dismissible是一个事件响应Widget,它和GestureDetector类似,不过它只…...

C语言--数据在内存中的存储

在C语言中&#xff0c;数据在内存中的存储方式主要取决于数据的类型和存储位置。以下是C语言中数据在内存中的存储方式的详细说明&#xff1a; 1. 数据类型与存储方式 基本数据类型 • 整数类型&#xff08;如int、short、long等&#xff09;&#xff1a; • 存储方式&#x…...

开源基础大模型实战:从零构建领域专家模型的技术指南

1. 项目概述&#xff1a;从零到一&#xff0c;理解开源基础大模型的价值最近在社区里看到不少朋友在讨论“datawhalechina/base-llm”这个项目&#xff0c;乍一看名字&#xff0c;可能觉得又是一个平平无奇的模型仓库。但如果你真的动手去部署、去尝试、去理解它背后的设计&…...

年终述职的“数据思维”:用指标和案例讲好你的技术故事

测试人的述职困境又到年终&#xff0c;述职报告像一场无法回避的考试。对于软件测试从业者而言&#xff0c;这往往比定位一个偶发崩溃的缺陷更难——我们习惯了与代码、用例、缺陷打交道&#xff0c;却常常在总结自己一年的价值时陷入沉默。“保障了产品质量”“完成了测试任务…...

树莓派AI智能体进化框架:轻量级边缘持续学习实践

1. 项目概述&#xff1a;一个面向树莓派的AI智能体进化框架最近在折腾树莓派上的AI应用时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫pk-pi-hermes-evolve。光看这个名字&#xff0c;就能拆出不少信息量&#xff1a;“pk”可能指代项目作者或一个特定系列&#xff0c;…...

Go代码片段管理工具gocode:提升开发效率的CLI利器

1. 项目概述&#xff1a;一个为Go开发者量身定制的代码片段管理工具如果你和我一样&#xff0c;是个长期和Go语言打交道的开发者&#xff0c;那你肯定遇到过这样的场景&#xff1a;在多个项目间来回切换时&#xff0c;总有一些常用的代码片段——比如一个优雅的错误处理包装函数…...

在Python项目中管理多个Taotoken API Key实现访问控制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Python项目中管理多个Taotoken API Key实现访问控制 在开发基于大语言模型的应用程序时&#xff0c;一个常见的需求是为不同的功…...

微软 Qlib 实战:从零构建跑赢大盘的 AI 智能选股策略(附最新回测与全流程代码)

在 GitHub 的量化投资社区中&#xff0c;微软亚洲研究院开源的 Qlib 毫无疑问是王者级别的存在&#xff08;13k Stars&#xff09;。传统的量化策略通常依赖主观经验设定的指标&#xff08;如&#xff1a;均线突破、MACD背离&#xff09;&#xff0c;而 Qlib 则是让 人工智能&a…...

TestDisk与PhotoRec:免费开源的数据恢复双雄终极指南

TestDisk与PhotoRec&#xff1a;免费开源的数据恢复双雄终极指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 在数字时代&#xff0c;数据丢失是每个人都会遇到的噩梦。无论是误删除重要文件、分区表损坏…...

Zabbix监控扩展实战:zbx-openclaw开源模板深度解析与应用指南

1. 项目概述与核心价值最近在折腾监控告警系统&#xff0c;发现一个挺有意思的开源项目&#xff0c;叫zbx-openclaw。这名字乍一看有点抽象&#xff0c;但拆开来看就明白了——zbx指的是 Zabbix&#xff0c;那个老牌的监控系统&#xff1b;openclaw直译是“开放的爪子”&#x…...

Python数据库编程与ORM

Python数据库编程与ORM一、数据库连接基础Python通过DB-API 2.0规范&#xff08;PEP 249&#xff09;统一了数据库接口。不同数据库使用不同的驱动&#xff0c;但API一致。import sqlite3# SQLite&#xff08;内置&#xff0c;无需安装&#xff09; conn sqlite3.connect(exam…...

AI代码助手Cursor与Django全栈开发:十倍速构建Web应用实战

1. 项目概述&#xff1a;当AI代码助手遇上Django全栈开发如果你是一名独立开发者、初创团队的技术负责人&#xff0c;或者正在学习全栈开发&#xff0c;那么你一定对如何高效构建一个现代化的Web应用感到头疼。从环境配置、数据库设计、API接口开发到前端页面渲染&#xff0c;每…...