BZOJ 1270 BeijingWc2008 雷涛的小猫

Posted zhangenming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 1270 BeijingWc2008 雷涛的小猫相关的知识,希望对你有一定的参考价值。

1270: [BeijingWc2008]雷涛的小猫

Time Limit: 50 Sec  Memory Limit: 162 MB
Submit: 1351  Solved: 716
[Submit][Status][Discuss]

Description

技术分享图片 技术分享图片

Input

技术分享图片

Output

技术分享图片

Sample Input

技术分享图片

Sample Output

HINT

技术分享图片

Source

很简单的dp,f1[i]表示高度为i的时候的最大值,f2[i][j]表示小猫在第i个柱子高度为j的时候的最大值,j这一维可以随着高度的枚举而省去

技术分享图片
 1 #include <bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 inline int read(){
 5     int x=0;int f=1;char ch=getchar();
 6     while(!isdigit(ch)) {if(ch==-) f=-1;ch=getchar();}
 7     while(isdigit(ch)) {x=x*10+ch-0;ch=getchar();}
 8     return x*f;
 9 }
10 const int MAXN=1e4+10;
11 namespace zhangenming{
12     int f1[5010]={},f2[5100]={},map[5010][2010],n,h,dep;
13     void init(){
14         n=read();h=read();dep=read();
15         for(int i=1;i<=n;i++){
16             int xx=read();
17             for(int j=1;j<=xx;j++){
18                 int yy=read();
19                 map[i][yy]++;
20             }
21         }
22     }
23     void dp(){
24         for(int i=h;i>=1;i--){
25             for(int j=1;j<=n;j++){
26                 f2[j]=max(f2[j],f2[j]+map[j][i]);
27                 f2[j]=max(f1[i+dep]+map[j][i],f2[j]);
28                 f1[i]=max(f1[i],f2[j]);
29             }
30         }
31         cout<<f1[1]<<endl;
32     }
33 }
34 int main(){
35     using namespace zhangenming;
36     init();
37     dp();
38     return 0;
39 }
View Code

 



以上是关于BZOJ 1270 BeijingWc2008 雷涛的小猫的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1270 [BeijingWc2008]雷涛的小猫

bzoj 1270 [BeijingWc2008]雷涛的小猫

bzoj1270[BeijingWc2008]雷涛的小猫 dp

B1270 [BeijingWc2008]雷涛的小猫 dp

入门动态规划 BZOJ 1270 雷涛的小猫

BZOJ 1272 1272: [BeiJingWc2008]Gate Of Babylon (容斥原理+卢卡斯定理)