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

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

现在也就只能写这种水题了。。

容易想到对于每个位置,有两种来源:

从同一棵树的上方1米跳下来/从其他树上方del米跳下来

用f[i][j]表示高度为i,第i棵树的最优解

f[i][j]=num[i][j]+max(f[i+1][j],f[i+del][k])

O(n^2*h)

考虑空间换时间

对于从上方del米掉下来,只需每个高度都记录一个最优解即可

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int Maxn=5000,Maxh=2000; 8 int n,h,delta; 9 int F1[Maxh+10][Maxn+10],F2[Maxh+10];10 11 void init(){12 scanf("%d%d%d",&n,&h,&delta);13 memset(F1,0,sizeof(F1));14 memset(F2,0,sizeof(F2)); 15 int T=0,t=0;16 for (int i=1;i<=n;i++){17 scanf("%d",&T);18 for (int j=1;j<=T;j++){19 scanf("%d",&t);20 F1[t][i]++;21 }22 } 23 } 24 void DP(){25 for (int Ht=h-1;Ht>=0;Ht--){26 for (int i=1;i<=n;i++){27 int num=F1[Ht+1][i];28 if (Ht+delta<=n)29 num=max(num,F2[Ht+delta]);30 F1[Ht][i]+=num;31 F2[Ht]=max(F2[Ht],F1[Ht][i]); 32 }33 } 34 }35 36 int main(){37 init();38 DP();39 int ans=0;40 for (int i=1;i<=n;i++)41 ans=max(ans,F1[0][i]);42 printf("%d",ans);43 return 0; 44 }
View Code

 

转载于:https://www.cnblogs.com/vincent-hwh/p/6727110.html

你可能感兴趣的文章
Sublime Text 报“Pylinter could not automatically determined the path to lint.py
查看>>
自动化测试用例getText()获取某一个元素的值返回null或空
查看>>
大数智能未来
查看>>
virtualenv和virtualenvwrapper 的安装和使用
查看>>
MAC sublime text 无法自动补齐标签
查看>>
NgBook留言本开发全过程(1)
查看>>
LeetCode-指针法
查看>>
Mysql phpStudy升级Mysql版本,流产了怎么办?
查看>>
SQLServer之数据库行锁
查看>>
OFDM仿真
查看>>
浅谈linux内核中内存分配函数
查看>>
走近SpringBoot
查看>>
写在读研初期
查看>>
开环增益对负反馈放大电路的影响
查看>>
MySQL-ERROR 2003
查看>>
SQL Server2012-SSIS的包管理和部署
查看>>
JavaScript内置对象
查看>>
如何把js的循环写成异步的
查看>>
ER图是啥?
查看>>
too many include files depth = 1024错误原因
查看>>