博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【bzoj1270】[BeijingWc2008]雷涛的小猫 dp
阅读量:4574 次
发布时间:2019-06-08

本文共 914 字,大约阅读时间需要 3 分钟。

题目描述

 

输入

输出

样例输入

样例输出

8


题解

dp

设f[i][j]表示在第i棵树的j高度时最多吃到的柿子数。

那么只有两种可能能够到达这个位置:滑下来、跳下来。

滑下来直接用f[i][j+1]转移,跳下来需要在dp同时记录一个g数组,g[j]表示j高度时最多的柿子数,这样可以用g[j+D]转移。

然后跑dp即可。

#include 
#include
#define N 2010using namespace std;int f[N][N] , num[N][N] , g[N];inline int read(){ int ret = 0; char ch = getchar(); while(ch < '0' || ch > '9') ch = getchar(); while(ch >= '0' && ch <= '9') ret = (ret << 3) + (ret << 1) + ch - '0' , ch = getchar(); return ret;}int main(){ int n , m , d , k , i , j; n = read() , m = read() , d = read(); for(i = 1 ; i <= n ; i ++ ) { k = read(); while(k -- ) num[i][read()] ++ ; } for(j = m ; ~j ; j -- ) { for(i = 1 ; i <= n ; i ++ ) { f[i][j] = f[i][j + 1] + num[i][j]; if(j + d <= m) f[i][j] = max(f[i][j] , g[j + d] + num[i][j]); g[j] = max(g[j] , f[i][j]); } } printf("%d\n" , g[0]); return 0;}

 

转载于:https://www.cnblogs.com/GXZlegend/p/6858396.html

你可能感兴趣的文章
从零系列--node爬虫利用进程池写数据
查看>>
C语言中二维数组行指针是什么
查看>>
sed 常见用法
查看>>
spring boot
查看>>
js实现动态添加删除(留言板)
查看>>
如何实现一个高效的单向链表逆序输出?
查看>>
JavaScript中严格判断NaN
查看>>
json_encode不自动转义斜杠“/”的方法
查看>>
【转贴】SQL2005的系统表
查看>>
CentOS 7安装PHP依赖管理Composer以及指定PHP版本使用Composer
查看>>
循序渐进大型网站架构
查看>>
Thinkphp5.0支付宝支付扩展库类库大全
查看>>
Nodejs+Express 搭建 web应用
查看>>
2013春节出游兴“专机游”
查看>>
Leetcode 67. Add Binary
查看>>
表达式
查看>>
mysql 创建用户名及密码
查看>>
VMware虚拟机安装Centos7后设置静态ip
查看>>
关于windows nginx不能启动问题的解决,史上最坑系列之一(原文)
查看>>
ssh免密码登录与常见问题
查看>>