「GDOI2009」 猴子 - Dp

猴子 一个猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这个猴子当然想吃尽量多的香蕉,但它又不想在地上走,而只想从一棵树跳到另一棵树上。同时猴子的体力也有限,它不能一次跳得太远或跳的次数太多。每当他跳到一棵树上,它就会把那棵树上的香蕉都吃了。那么它最多能吃多少个香蕉呢? 阅读详情

题目描述

一只猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这只猴子当然想吃尽量多的香蕉,但它又不想在地上走,只想从一棵树跳到另一棵树上.同时猴子的体力有限,它不能一次跳得太远或跳得次数太多,每当他跳到一棵树上,就会把那棵树上的香蕉都吃掉。那么,它最多能吃多少个香蕉呢?

分析

定义f[i][j]为到达第i棵树,跳了j次所获最多的香蕉个数。由定义,不容易推出方程:

f[i][j]=\max\{f[k][j-1]+a[i]\ |\ b[i]-b[k]\le d\}

从可以到达第i棵树的树更新过来。初始化f[][]=-\infty,f[1][0]=a[1],因为一开始在第1棵树上。

代码

#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
long long f[105][105];
long long a[105],b[105],d,n,m;
int main() {
	scanf("%lld%lld%lld",&n,&d,&m);
	for (int i=1;i<=n;i++)
		scanf("%lld%lld",&a[i],&b[i]);
	memset(f,-0x3f,sizeof f);
	long long ans=a[1];
	f[1][0]=a[1];
	for (int i=2;i<=n;i++) {
		for (int j=1;j<=m;j++) {
			for (int k=i-1;k>=1;k--) {
				if (b[i]-b[k]<=d) f[i][j]=max(f[i][j],f[k][j-1]+a[i]);
				else break;
			}
			ans=max(ans,f[i][j]);
		}
	}
	printf("%lld",ans);
	return 0;
}

 

GDOI 2023 游记!! 摇滚!弹幕!天意!阿噗鲁派! 立即下载

相关推荐

研发流程后端开发工具,提示功能开发效率

后端开发工具

【单调队列优化DP】LNSYOJ#106. 猴子

这是一道思路比较简单但是调试极其毒瘤的一道题目! 题目描述 一个猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这个猴子当然想吃尽量多的香蕉,但它又不想在地上走,而只想从一棵树跳到另一棵树上。同时猴子的体力也有限,它不能一次跳得太远或跳的次数太多。每当他跳到一棵树上,它就会把那棵树上的香蕉都吃了。那么它最多能吃多少个香蕉呢? 输入格式 输...

bangzuan5029的博客 390

primetime如何做voltage scaling

存在这样的情况,标准单元库只有ssgnp0p72vm40c和ssgnp0p9vm40c的libs,但是我们希望它工作在ssgnp0p76vm40c,这样的话就需要用ssgnp0p72vm40c和ssgnp0p9vm40c的libs来scaling出ssgnp0p76vm40c的lib。

qq_34326957的博客 1685

猴子与香蕉(动态规划状态转移方程)

 【问题描述】     一只猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这只猴子当然想吃尽量多的香蕉,但它又不想在地上走,只想从一棵树跳到另一棵树上.同时猴子的体力有限,它不能一次跳得太远或跳得次数太多,每当他跳到一棵树上,就会把那棵树上的香蕉都吃掉。那么,它最多能吃多少个香蕉呢?   【输入格式】     输入第一行为三个整数,分别是香蕉树的棵数N,猴子每...

lanshan1111的博客 3320

腾讯云TDSQL MySQL版 - 开发指南兼容性

语言结构 分布式实例支持所有 MySQL 使用的文字格式,包括: String Literals Numeric Literals Date and Time Literals Hexadecimal Literals Bit-Value Literals Boolean Literals NULL Values String Literals String Literals 是一个 bytes 或者 characters 的序列,两端被单引号'或者双引号"包围,TDSQL MySQL版

weixin_43872058的博客 911

GDKOI2009-猴子 Monkey

题目描述 一个猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这个猴子当然想吃尽量多的香蕉,但它又不想在地上走,而只想从一棵树跳到另一棵树上。同时猴子的体力也有限,它不能一次跳得太远或跳的次数太多。每当他跳到一棵树上,它就会把那棵树上的香蕉都吃了。那么它最多能吃多少个香蕉呢? 输入 输入第一行为三个整数,分别是香蕉树的棵数N,猴子每次跳跃的最大距离D...

Zerotogether的博客 681

【八股】JUC并发编程篇

👉抽象队列同步器,就是一种锁,内部维护的是一个先进先出的双向队列,队列中存储的是排队的线程,用state来标识是否有线程获得锁【0是无锁状态】👉流程:当一个线程拿到锁后会修改state = 1,这时如果有其他线程访问则会进入队列进行排序,直到state变成0后,队头线程才会拿到锁。在对state进行修改时,用的是CAS操作,所以可以保证原子性。👉它可以实现公平锁或非公平锁【默认】,上述是一个公平锁。如果新线程和队头线程抢锁资源就是非公平锁。

qq_44768318的博客 552

Cpp环境【CQYZOJ1836】【Code[VS]5230】猴子

【问题描述】   一只猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这只猴子当然想吃尽量多的香蕉,但它又不想在地上走,只想从一棵树跳到另一棵树上.同时猴子的体力有限,它不能一次跳得太远或跳得次数太多,每当他跳到一棵树上,就会把那棵树上的香蕉都吃掉。那么,它最多能吃多少个香蕉呢?【输入格式】   输入第一行为三个整数,分别是香蕉树的棵数N,猴子每次跳跃的最

天地皆逆旅,你我本行人。 855

scratch绘制旋转彩球 2023年9月电子学会图形化编程scratch编程等级考试四级真题和答案解析

​ scratch绘制旋转彩球 2023年9月电子学会图形化编程Scratch等级考试四级真题 一、题目要求 1、准备工作 (1)删除小猫角色,从角色库选择Ball角色; (2)默认空白背景。 ​

青少年编程学习指导 1369

部分旧版统信国产系统下载资源

注:全部自来网络查找,建议到官网下载最新版。

aggs1990的专栏 5254

GDOI - 2009 猴子 动态规划 重庆一中高2018级竞赛班第八次测试 2016.8.7 Problem 1

【问题描述】 一只猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这只猴子当然想吃尽量多的香蕉,但它又不想在地上走,只想从一棵树跳到另一棵树上.同时猴子的体力有限,它不能一次跳得太远或跳得次数太多,每当他跳到一棵树上,就会把那棵树上的香蕉都吃掉。那么,它最多能吃多少个香蕉呢?【输入格式】 输入第一行为三个整数,分别是香蕉树的棵数N,猴子每次跳跃的最大距离D,最

灬豪侠彡 746

【论文解读--Xdog】新型电驱式四足机器人研制与测试

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、四足机器人体型大小和驱动方式的比较二、四足机器人设计一些重要的结论三、系统控制框架四、系统硬件框架五、力位混合控制(阻抗控制)六、侧向平衡控制(和VMC如出一辙)七、电机驱动系统研制(FOC磁场定向控制)总结 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对新型电驱式四足机器人研制与测试做个简单的介绍,具体内容后续再更,其他模块可以参

qq_35635374的博客 3727

【JZOJ1011】Zoo

problem Description JZ拥有一个很大的野生动物园。这个动物园坐落在一个狭长的山谷内,这个区域从南到北被划分成N个区域,每个区域都饲养着一头狮子。这些狮子从北到南编号为1,2,3,…,N。每头狮子都有一个觅食能力值Ai,Ai越小觅食能力越强。饲养员西西决定对狮子进行M次投喂,每次投喂都选择一个区间[I,J],从中选取觅食能力值第K强的狮子进行投喂。值得注意的是,西西不愿意对某...

路人黑的纸巾 1124

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JZOJ-senior-1773. 【NOIP动态规划专题】猴子

Time Limits: 1000 ms Memory Limits: 65536 KB Description 一个猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这个猴子当然想吃尽量多的香蕉,但它又不想在地上走,而只想从一棵树跳到另一棵树上。同时猴子的体力也有限,它不能一次跳得太远或跳的次数太多。每当他跳到一棵树上,它就会把那棵树上的香蕉都吃了。那么它最多...

HuangXinyue1017的博客 797

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

1005.[GDOI2009五校联考] 公交网络

题目大意 给出一颗N个点的无根树,定义两点间距离为当其中一点为另一点祖先时为1,否则为2,求最短距离和 solution 先考虑确定了根的情况 设sz[i]sz[i]sz[i]为以iii为根的子树大小(包括iii) 则在以fa[i]fa[i]fa[i]为根的子树中,以iii为根的子树中每一个都要向外连sz[fa[i]]−sz[i]sz[fa[i]]-sz[i]sz[fa[i]]−sz[i]条边 则以iii为根的子树在以fa[i]fa[i]fa[i]为根的子树中贡献为sz[i]∗(sz[fa[i]]−sz[i

StevenWang2019的博客 438

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

caioj1175/GDKOI2009:猴子

对于单调队列的应用

MZW_BG的博客 283

Codevs5230【三校联考试题】 猴子(重庆一中高2018级信息学竞赛测验8) 解题报告

【问题描述】        一只猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这只猴子当然想吃尽量多的香蕉,但它又不想在地上走,只想从一棵树跳到另一棵树上.同时猴子的体力有限,它不能一次跳得太远或跳得次数太多,每当他跳到一棵树上,就会把那棵树上的香蕉都吃掉。那么,它最多能吃多少个香蕉呢?          【输入格式】        输入第一行为

cqyz_holiday的博客 1344

UVa - 815 Flooded! 洪水 二分猜答案+排序 重庆一中高2018级竞赛班第三次测试 2016.7.24 Problem 1

【问题描述】 有一个n行m列的网格,每个格子是边长为10米的正方形,网格四周是无限高的墙壁,第i行第j列每个格子的海拔高度为h[i][j]。现在网格中有T立方米的水,请你计算网格中的水平面的海拔高度,以及有水格子数目。注意,在网格中,所有有水格子的水平面的海拔高度相同,所以有水格子的数量为海拔高度严格小于水平面高度的格子数目。 【输入格式】 第一行整数n和m,表示网格有n行m列。 接下来是

灬豪侠彡 625

一个小猴子边上有100根香蕉,它要走过50米才能到家,每

转自出处:http://tieba.baidu.com/p/2630360915 16根.  问题简化成走最短的路,背更多的水果.但路和水果之间有限制!  题目已经限制,猴子最多背50,我们计算其消耗仅剩下50根的米处,  假设猴子第一次背了50根,走了X米,在回来搬第2个50根,就有:  100-3X ......... 剩下的香蕉数(先走X,往反2X)  50-X

martin_liang的专栏 1万+

可爱的猴子

可爱的猴子 时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 树上有n只猴子。它们编号为 1 到n。1 号猴子用它的尾巴勾着树枝。剩下的猴子都被其他的猴子用手抓着。每只猴子的每只手可以抓住另一只猴子的尾巴。从0 时刻开始,每一秒都有一只猴子松开它的一只手。这会导致一些猴子掉到地上...

weixin_30908941的博客 241

关于100根香蕉,猴子要背回50米远的家,一次最多只能背50根香蕉,但猴子每走1米后就要吃1根香蕉,问猴子最多可以背多少根香蕉回家?

100根香蕉,猴子要背回50米远的家,一次最多只能背50根香蕉,但猴子每走1米后就要吃1根香蕉,问猴子最多可以背多少根香蕉回家? 用java代码如何实现? package com.li;   public class Test {     //总的香蕉数     private static int count=100;     //每次搬运的最大香蕉数和回家的步数

m0_37979201的博客 6113

USACO - 2.4.2 穿越栅栏(改编) 重庆一中高2018级竞赛班第二次测试 2016.7.13 Problem 3

【问题描述】 FJ搭建了一个巨大的用栅栏围成的迷宫。幸运的是,他在迷宫的边界上留出了两段栅栏作为迷宫的出口,并且从迷宫中的任意一点都能找到一条走出迷宫的路。给定迷宫的行和列数和这个迷宫,然后计算从迷宫中最“糟糕”的那一个点走出迷宫所需的最少步数。【输入格式】 第一行为正数m和n,表示迷宫的行数和列数,用空格隔开。迷宫用一个由数字组成的矩阵表示,一个数字表示迷宫的一个格子。每一个格子的数字告诉我们

灬豪侠彡 437
上一篇: 「HDU3966」 树上的询问 - 树链剖分
下一篇: 「BSOJ1462」 偷懒路径 - 最短路
TbYangZ
博客等级 码龄8年 13粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值