P1107 [BJWC2008] 雷涛的小猫

[BJWC2008] 雷涛的小猫

题目背景

原最大整数参见 P1012

题目描述

雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的)。在他的照顾下,小猫很快恢复了健康,并且愈发的活泼可爱了。

可是有一天,雷涛下课回到寝室,却发现小猫不见了!经过一番寻找,才发现她正趴在阳台上对窗外的柿子树发呆…

在北京大学的校园里,有许多柿子树,在雷涛所在的宿舍楼前,就有 N N N 棵。并且这 N N N 棵柿子树每棵的高度都是 H H H。冬天的寒冷渐渐笼罩了大地,树上的叶子渐渐掉光了,只剩下一个个黄澄澄的柿子,看着非常喜人。而雷涛的小猫恰好非常的爱吃柿子,看着窗外树上的柿子,她十分眼馋,于是决定利用自己敏捷的跳跃能力跳到树上去吃柿子。

小猫可以从宿舍的阳台上跳到窗外任意一棵柿子树的树顶。之后,她每次都可以在当前位置沿着当前所在的柿子树向下跳 1 1 1 单位距离。当然,小猫的能力远不止如此,她还可以在树之间跳跃。每次她都可以从当前这棵树跳到另外的任意一棵,在这个过程中,她的高度会下降 Delta 单位距离。每个时刻,只要她所在的位置有柿子,她就可以吃掉。整个“吃柿子行动”一直到小猫落到地面上为止。

雷涛调查了所有柿子树上柿子的生长情况。他很想知道,小猫从阳台出发,最多能吃到多少柿子?他知道写一个程序可以很容易的解决这个问题,但是他现在懒于写任何代码。于是,现在你的任务就是帮助雷涛写一个这样的程序。

图为 N = 3 , H = 10 , D e l t a = 2 N=3, H=10, Delta=2 N=3,H=10,Delta=2 的一个例子。小猫按照图示路线进行跳跃,可以吃到最多的 8 8 8 个柿子。

输入格式

第一行有三个以空格分隔的整数,分别代表 N , H , D e l t a N,H,Delta N,H,Delta

接下来的 N N N 行,每行第一个整数为 N i N_i Ni,代表第 i i i 棵树上的柿子数量。

接下来是 N i N_i Ni 个整数,每个整数 T i , j T_{i,j} Ti,j 代表第 i i i 棵柿子树的 T i , j T_{i,j} Ti,j 高度上长有一个柿子。

输出格式

一个整数,即小猫最多吃到的柿子数。

样例 #1

样例输入 #1

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

样例输出 #1

8

提示

数据范围及约定

对于全部数据, 1 ≤ N , H ≤ 2000 1 \leq N, H ≤ 2000 1N,H2000 0 ≤ N i ≤ 5000 0 \leq N_i ≤ 5000 0Ni5000 1 ≤ D e l t a ≤ N , 1 ≤ T i , j ≤ H 1 ≤ Delta ≤ N,1 ≤ T_{i,j} ≤ H 1DeltaN,1Ti,jH

输入文件大小不大于 40MB。注意输入输出效率。

来源 Excalibur, 2008。

这道题其实比较简单,虽然是道绿题,但是一点也不难。
很容易想到转移方程是
d p [ i ] [ j ] = d p [ i ] [ j + 1 ] dp[i][j]=dp[i][j+1] dp[i][j]=dp[i][j+1]
d p [ i ] [ j ] = m a x ( d p [ i ] [ j ] , d p [ i ] [ j − d e t a l ] ) dp[i][j]=max(dp[i][j],dp[i][j-detal]) dp[i][j]=max(dp[i][j],dp[i][jdetal])
但是可以想到,这样写出来的程序是O(n3)的时间复杂度,我们需要优化一层。
不难想到,我们可以对于每一层的dp求一个最大值q,从而在下一次使用这一层的时候,可以直接求得最大值

上代码

#include<bits/stdc++.h>
using namespace std;

int dp[2500][5100];
int mp[2500][5100];
int q[5100],maxn=INT_MIN;
int main(){
	int n,h,delta;
	cin>>n>>h>>delta;
	for (int i=1;i<=n;i++){
		int tmp;
		cin>>tmp;
		for (int j=1;j<=tmp;j++){
			int t;
			cin>>t;
			mp[i][t]++;
		}
	}
	for (int j=h;j>=0;j--){
		for (int i=1;i<=n;i++){
			dp[i][j]=dp[i][j+1]+mp[i][j];
			dp[i][j]=max(dp[i][j],q[j+delta]+mp[i][j]);
			q[j]=max(q[j],dp[i][j]);
			maxn=max(dp[i][j],maxn);
		}
	}
	cout<<maxn;
	return 0;
}

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

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

相关文章

vb6多线程异步,VB.NET 全用API实现:CreateThread创建多线程,等待线程完成任务

在VB.NET中&#xff0c;你可以使用API函数来创建多线程并等待线程完成任务。以下是一个示例代码&#xff0c;展示如何使用API函数来实现这个功能&#xff1a; Imports System.Runtime.InteropServices Imports System.ThreadingPublic Class Form1Private Delegate Sub ThreadC…

嵌入式系统中静态库与动态库详解

大家好,今天我们来分享一下,动态库与静态库之间的差异有哪些? 计算机的运行当然离不开内存。 程序运行在内存当中,那么程序在内存中的布局是什么样子的呢? 程序的内存分为代码区、数据区、堆区和栈区,它们的布局是这样的,这里重点看代码区。 代码区中是什么呢? 这里主…

【sqlite3】联系人管理系统

SQLite3实现简单的联系人管理系统 有关sqlite3的基础知识请点击&#xff1a;SQLite3的使用 效果展示&#xff1a; 创建一个名为contacts.db的数据库 首先&#xff0c;我们需要创建一个名为contacts.db的数据库&#xff0c;并建立一个名为"contact"的表&#xff0…

某易六月实习笔试

第一题 下面代码需要更改的地方已指出。 解题思路 模拟题&#xff0c;用双指针记录双方当前式神&#xff0c;再记录一下当前谁先手&#xff0c;直到有一方指针越界。 把下面代码now1变为now(now1)%2就行。 第二题 解题思路 01背包变种&#xff0c;只是背包的容量变为多个维度…

打开防火墙设置提示需要使用新应用以打开此windowsdefender

拿到一台新电脑&#xff0c;装好虚拟机。主机ping虚拟机正常&#xff0c;虚拟机上网也正常&#xff0c;但是虚拟机ping主机ping不通。根据我多年虚拟机使用经验&#xff0c;这显然是因为主机防火墙没关。但是当我准备关闭主机防火墙的时候&#xff0c;发现防火墙设置打不开。界…

nvm安装以及idea下vue启动项目过程和注意事项

注意1&#xff1a;nvm版本不要太低&#xff0c;1.1.7会出现下面这个问题&#xff0c;建议1.1.10及其以上版本 然后安装这个教程安装nvm和node.js 链接: nvm安装教程&#xff08;一篇文章所有问题全搞定&#xff0c;非常详细&#xff09; 注意2&#xff1a;上面的教程有一步骤…

【WPF】Windows系统桌面应用程序编程开发新手入门-打造自己的小工具

电脑Windows系统上的桌面程序通常是用Visual Studio 开发工具编写出来的&#xff0c;有两种开发方式供选择&#xff0c;一种是WindowForm&#xff0c;简称WinForm&#xff0c;另一种是Windows Presentation Foundation&#xff0c;简称WPF&#xff0c;这里将学习WPF项目。 文章…

[数据库]mysql用户管理权限管理

目录 ​编辑用户管理​编辑 权限管理 ​编辑 ​编辑 ​编辑案例​编辑 细节 ​编辑 用户管理 我们用创建的用户在登录之后可以看到他和root看到的数据库是完全不一样的 权限管理 案例 登录这个账户可以看到还看不到teatdb这个数据库, 因为还没有授权 分配权限 过来刷新…

MathType2024最新官方无限永久试用版本下载

“我正在使用MathType&#xff0c;它让我的工作变得简单多了。”在中国科学院数学与系统科学研究院的一间办公室内&#xff0c;研究员张益唐兴奋地对《中国科学报》说。 这位因解决了数学界著名的“孪生素数猜想”而名声大噪的数学家&#xff0c;在谈到他最近使用的数学公式编辑…

MM-LLM:CogVLM解读

在图文多模态模型中&#xff0c;范式是图像的编码器、文本编码器、模态融合器。也就是不同模态特征抽取加模态对齐。 这部分可以看李沐的精讲 在大模型里的范式在也是如此&#xff0c;目前的工作大部分都专注于怎么拉齐不同模态。 该论文的动机&#xff08;背景&#xff09;&…

指针类型及数据读取和解释

指针类型的作用和解引用的过程 指针类型的作用&#xff1a; 根据指针类型确定读取数据位数&#xff08;float类型指针&#xff0c;读取32位&#xff09;&#xff1b;根据指针类型解释读取的数据&#xff08;float类型指针&#xff0c;按照1位符号位&#xff0c;8位指数位&…

(单机架设教程)3D剑踪

前言 今天给大家带来一款单机游戏的架设&#xff1a;3D剑踪 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; 3D剑踪 搭建教程 此游戏架设不需要虚拟机&#xff0c; 我们先解压 “3D剑踪.zip” &…

【计算机图形学 | 基于MFC三维图形开发】期末考试知识点汇总(上)

文章目录 视频教程第一章 计算机图形学概述计算机图形学的定义计算机图形学的应用计算机图形学 vs 图像处理 vs模式识别图形显示器的发展及工作原理理解三维渲染管线 第二章 基本图元的扫描转换扫描转换直线的扫描转换DDA算法Bresenham算法中点画线算法圆的扫描转换中点画圆算法…

老师如何发布期末成绩查询

期末成绩的发布总是让人既期待又紧张。但别担心&#xff0c;今天我就来和大家分享一下如何高效、准确地发布期末成绩查询&#xff0c;让家长和学生都能轻松查到成绩&#xff0c;同时也减轻你的工作负担。 整理成绩数据是关键。确保你的成绩单是最新的&#xff0c;并且已经经过仔…

架构师篇-10、DDD实战篇:通过领域模型落地系统

基于领域模型的设计与开发 数据库设计程序设计微服务设计 在线订餐系统的领域事件通知 微服务拆分 事件风暴会议 梳理领域事件进行领域建模识别聚合关系划分限界上下文 用户下单领域模型 更新后的模型 领域模型的设计实现过程 数据库设计 数据库映射&#xff1a;一对一关系…

【Mac】Auto Mouse Click for Mac(高效、稳定的鼠标连点器软件)软件介绍

软件介绍 Auto Mouse Click for Mac 是一款专为 macOS 平台设计的自动鼠标点击软件&#xff0c;它可以帮助用户自动化重复的鼠标点击操作&#xff0c;从而提高工作效率。以下是这款软件的主要特点和功能&#xff1a; 1.自动化点击操作&#xff1a;Auto Mouse Click 允许用户录…

【硬件视界2】CPU和GPU:计算机架构的双子星

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、CPU (中央处理器)①主要作用②特点 2、 GPU (图形处理…

Workerman在线客服系统源码,附搭建教程

源码介绍&#xff1a; Workerman在线客服系统源码。 workerman是一个高性能的PHP socket 服务器框架&#xff0c;workerman基于PHP多进程以及libevent事件轮询库&#xff0c;PHP开发者只要实现一两个接口&#xff0c;便可以开发出自己的网络应用&#xff0c;例如Rpc服务、聊天…

气膜仓库的优势与应用—轻空间

随着现代物流和存储需求的不断增长&#xff0c;传统仓库的建设和运营成本日益增加&#xff0c;企业需要寻找更加灵活、高效和经济的解决方案。在这种背景下&#xff0c;气膜仓库作为一种新型仓储形式&#xff0c;以其独特的优势和广泛的应用前景&#xff0c;逐渐受到市场的青睐…

Hadoop3:Yarn配置任务的优先级

一、需求说明 配置队列优先级 容量调度器&#xff0c;支持任务优先级的配置&#xff0c;在资源紧张时&#xff0c;优先级高的任务将优先获取资源。默认情况&#xff0c;Yarn将所有任务的优先级限制为0&#xff0c;若想使用任务的优先级功能&#xff0c;须开放该限制。 二、修…