[bzoj 1270][BeijingWc2008]雷涛的小猫
Description
.jpg)
Input
Output
小猫能吃到多少柿子
Sample Input
3 1 4 10
6 3 5 9 7 8 9
5 4 5 3 6 9
Sample Output
HINT
Source
题解
朴素做法很容易想,就是对于每一层,枚举上面d层的最大值来转移,效率$O(n^2h)$
显然没法过
所以考虑优化:能不能$O(1)$算上面d层的最大值?
观察到对于第i层,它只能从i+1层或者i+d层跳过来,所以我们可以预处理i+d层的最大值,i+1层可以直接$O(1)$转移
只需要枚举层数的时候倒序枚举就可以了!保存下来当前层的最大值,下面转移的时候就可以直接调用了
但是要注意的一点是,不能从当前点最上方的i+d层那里跳过来,所以需要保存一下最大值的位置,特判一下,如果最大值正好在最上方,那就得枚举一下i+d层来转移(不过这对于复杂度几乎没有影响)
总复杂度$O(nh)$
#include <bits/stdc++.h>
using namespace std;
int n,m,d,t[][];
int a[][];
int f[][];
int main(){
scanf("%d%d%d",&n,&m,&d);
for(int i=;i<=n;i++){
int x;
scanf("%d",&x);
for(int j=;j<=x;j++){
int y;
scanf("%d",&y);
a[i][y]++;
}
}
for(int i=;i<=n;i++){
f[i][m]=a[i][m];
if(f[i][m]>t[m][]){
t[m][]=f[i][m];
t[m][]=i;
}
}
for(int j=m-;j;j--){
for(int i=;i<=n;i++){
f[i][j]=max(f[i][j],f[i][j+]+a[i][j]);
if(j<=m-d){
if(t[j+d][]!=i){
f[i][j]=max(f[i][j],t[j+d][]+a[i][j]);
}else {
for(int k=;k<=n;k++){
if(k==i)continue;
f[i][j]=max(f[i][j],f[k][j+d]+a[i][j]);
}
}
}
if(f[i][j]>t[j][]){
t[j][]=f[i][j];
t[j][]=i;
}
}
}
int ans=;
for(int i=;i<=n;i++){
ans=max(ans,f[i][]);
}
printf("%d\n",ans);
}
[bzoj 1270][BeijingWc2008]雷涛的小猫的更多相关文章
- BZOJ 1270: [BeijingWc2008]雷涛的小猫( dp )
简单的dp.. dp(i,j) = max(dp(x,y))+cnt[i][j], (x,y)->(i,j)是合法路径. 设f(i)= max(dp(x,y))(1≤x≤N, 1≤y≤i), g ...
- bzoj 1270: [BeijingWc2008]雷涛的小猫 简单dp+滚动数组
1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Descrip ...
- 1270: [BeijingWc2008]雷涛的小猫
1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 905 Solved: 430[Submit][ ...
- 【BZOJ】1270: [BeijingWc2008]雷涛的小猫(DP+水题)
http://www.lydsy.com/JudgeOnline/problem.php?id=1270 这完全是一眼题啊,但是n^2的时间挺感人.(n^2一下的级别请大神们赐教,我还没学多少dp优化 ...
- 【BZOJ】1270 [BeijingWc2008]雷涛的小猫
[算法]DP [题解]f1[i]表示第i棵树当前高度能得到的最多果子数 f2[i]表示高度i能得到的最多果子数. 于是有: f1[j]=max(f1[j],f2[i+delta])+mp[j][i]; ...
- 【BZOJ1270】1270: [BeijingWc2008]雷涛的小猫 DP
Description Input Output Sample Input Sample Output 8 HINT Source 唉这么蠢的Dp没一下子看出来,Dp真是太弱了啦. #includ ...
- BZOJ1270: [BeijingWc2008]雷涛的小猫
1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 836 Solved: 392[Submit][ ...
- bzoj1270 BeijingWc2008 雷涛的小猫 DP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1270 比较水的一道dp f1[i]为高度为i的时候的最大值 f2[i]为当前高度在第i棵树 ...
- [BeijingWc2008]雷涛的小猫
--BZOJ1270 Description 雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样的行为是违反学生宿舍管理条例的). 在他的照顾下,小猫很快恢复了健康 ...
随机推荐
- table的td的1%
使用media-obj和media-bd类似的样式,大多数采用的是display: table-cell(即是table中td)来实现.当然设置display是不够,还要根据情况设置width.如下面 ...
- Inception系列
从GoogLeNet的Inceptionv1开始,发展了众多inception,如inception v2.v3.v4与Inception-ResNet-V2. 故事还是要从inception v1开 ...
- java客户端调用ftp上传下载文件
1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...
- springmvc返回json数据的工具类
在ssm框架下,MVC向前端返回数据的json工具类代码如下: public class JsonResult<T> { public static final int SUCCESS=0 ...
- Outlier Detection
1)正态分布数据,飘出95%的可能是异常值.变量var正态标准化,|var|<=1.96的可能是异常值,further chk needed!large sample better. 对于偏态分 ...
- jmeter 测试websocket接口(一)
jmeter 测试websocket接口时,需要对jmeter添加测试websocket的jar包. 下载地址: https://download.csdn.net/download/qq_14913 ...
- html04
web的三要素:HTML:搭建页面的基本结构css: 对页面进行修饰-让页面更美观JavaScript:让页面可以有交互行为(用户和界面)1.js是什么:JavaScript :页面的脚本语言,运行在 ...
- A+B+C问题
这是一个非常简单的题目,意在考察你编程的基础能力.千万别想难了哦.输入为一行,包括了用空格分隔的三个整数 AA.BB.CC(数据范围均在-40−40 ~ 4040 之间).输出为一行,为“A+B+CA ...
- SQL查询遍历数据方法一 [ 临时表 + While循环]
以下以SQL Server 2000中的NorthWind数据库中的Customers表为例, 用 临时表 + While循环 的方法, 对Customers表中的CompanyName列进行遍历 c ...
- Zookeeper使用实例——服务节点管理
分布式处理中,总会存在多个服务节点同时工作,并且节点数量会随着网络规模的变化而动态增减,服务节点也有可能发生宕机与恢复.面对着动态增减的服务节点,我们如何保证客户请求被服务器正确处理呢.我们可以通过z ...