洛谷P2948

看到题目就觉得这是动规但一直没想到如何状态转移……看了别人的题解之后才有一些想法

f[i][j]:前i单位时间能力值为j可以滑的最多次数

lessons[i][j]:结束时间为i,获得能力为j的时长最短的课程的开始时间

ski[i]:能力值为i可以滑的时间最短的坡的时长

d[i]表示前i时长最多可以滑的坡数

几个状态转移方程:

喝可可:f[i][j]=max(f[i][j],f[i-1][j])

滑雪:f[i][j]=max(f[i][j],f[i-ski[j]][j]+1)

上课:f[i][j]=max(f[i][j],d[lessons[i-1][j]])

随手贴个代码:

 #include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int lessons[][],ski[],f[][],d[];
//lessons[i][j]表示结束时间为i,能力为j的课程的最晚开始时间
//ski[i]表示能力值为i可以滑的时间最短的坡的时长
//f[i][j]表示前i时长能力值为j最多可以滑的坡数
//d[i]表示前i时长最多可以滑的坡数
int t,s,n;
int main()
{
scanf("%d%d%d",&t,&s,&n);
for(int i=;i<=s;i++)//初始化lessons[][]
{
int m,l,a;
scanf("%d%d%d",&m,&l,&a);
lessons[l+m-][a]=max(lessons[l+m-][a],m);
}
for(int i=;i<=n;i++)//初始化ski[]
{
int c,d;
scanf("%d%d",&c,&d);
for(int j=c;j<=;j++)
if(!ski[j]||ski[j]>d)
ski[j]=d;
}
for(int i=;i<=t;i++)
for(int j=;j<=;j++)
f[i][j]=-;
f[][]=;
for(int i=;i<=t;i++)
{
for(int j=;j<=;j++)
{
f[i][j]=max(f[i][j],f[i-][j]);//喝可可
if(ski[j]&&i>=ski[j])//滑雪
f[i][j]=max(f[i][j],f[i-ski[j]][j]+);
if(lessons[i-][j])//上课
f[i][j]=max(f[i][j],d[lessons[i-][j]]);
d[i]=max(d[i],f[i][j]);
}
}
printf("%d\n",d[t]);
return ;
}

注意两个问题:

1、初始化:f[0][1]=0(初始化能力为1),其余都为负无穷!

2、状态转移方程没有f[i][j]=max(f[i][j],f[i][j-1)!

第一次写的时候因为这两个问题WA了……但自己也没想出来为什么……如果有神犇理解的话敬请指教w  

最后吧分享一句关于动规挺有感触的一句话……

除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解

(新人第一次发帖,多多指教)

[USACO2009 OPEN] 滑雪课 Ski Lessons的更多相关文章

  1. [USACO09OPEN]滑雪课Ski Lessons

    题目描述 Farmer John wants to take Bessie skiing in Colorado. Sadly, Bessie is not really a very good sk ...

  2. BZOJ 1571: [Usaco2009 Open]滑雪课Ski

    Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S& ...

  3. [bzoj1571][Usaco2009 Open]滑雪课Ski

    题目描述 Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S<=100 ...

  4. 【贪心优化dp决策】bzoj1571: [Usaco2009 Open]滑雪课Ski

    还有贪心优化dp决策的操作…… Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里 ...

  5. BZOJ——1571: [Usaco2009 Open]滑雪课Ski

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit:  ...

  6. P2948 [USACO09OPEN]滑雪课Ski Lessons

    题意:Bessie去滑雪,限时T,滑雪场有S节课 每节课开始于$m_i$,长度为$l_i$,可以将Bessie的能力值变成$a_i$(注意是变成不是增加) 有n个滑雪坡,去滑雪需要$c_i$的能力,并 ...

  7. [luoguP2948] [USACO09OPEN]滑雪课Ski Lessons(DP)

    传送门 f[i][j]表示i时刻能力值为j的最大滑雪数 显然f[0][1]=0,开始搜索 三种转移: ①美美的喝上一杯**:f[i+1][j]=max(f[i+1][j],f[i][j]) ②滑雪,f ...

  8. 1571. [Usaco2009 Open]滑雪课Ski

    传送门 可以想到 $dp$,设 $f[i][j]$ 表示当前等级为 $i$,时间为 $j$ 的最大滑雪次数 显然上课不会上让自己等级降低的课,所以第一维 $i$ 满足无后效性 然后直接枚举 $i,j$ ...

  9. bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 DP不一定全部全状态转移 贪心的舍去一些不合法的反而更容易转移 在一定能力范围内,肯定滑雪所需 ...

随机推荐

  1. leetcode434 字符串中的单词树(python)

    统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my name is John" ...

  2. 我们建了一个 Golang 硬核技术交流群(内含视频福利)

    目录 目录 Golang 是什么? 我们为什么选择 Golang? Golang 是云时代的宠儿! 我们搞了一场 Golang 入门直播 Golang 是什么? Golang 是谷歌 2009 年发布 ...

  3. css随笔记(持续更新)

    /*DIV鼠标穿透*/ div{pointer-events:none;} /*清除IE11默认×*/ input::-ms-clear{display:none;} 使用伪类写边框部分三角 右上角三 ...

  4. 阿里云 Centos7 部署 Django 项目

    前期准备 阿里云服务器 mysql数据库 已经本地运行成功的项目 阿里云服务器的环境配置 Git #代码管理 Gitlab #代码托管,要求服务器内存不低于2G,我选择放弃 Mysql #连接数据库 ...

  5. iptables规则

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分 iptables文件设置路径:命令:vim /etc/sysconfig/iptables-config 0x02 ...

  6. ipad已停用 连接itunes怎么办

    问题描述: ipad 开机密码多次输入出错后,提示 ipad已停用 连接itunes 解决方法: 参考: https://jingyan.baidu.com/article/fb48e8bee9ef4 ...

  7. Python 内置函数super

    super()函数是用于调用父类/超类的一个方法 super是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没有问题,但是如果使用多继承,会涉及到查找顺序(MRO),重复调用(钻石继 ...

  8. Docker网络大揭秘(单机)

    docker网络官网 https://docs.docker.com/network/ Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或将它们连接到非Docker工作负载.Dock ...

  9. eclipse中经常用到的修改菜单项

    1.编写java程序时,书写一个类之后,要调用此类的某个方法时,点个点,此类的所有方法都会自动出现,然后再选择需要的那个方法即可: 2.鼠标放在一个类上面,关于此类的相关描述就会自动加载出来,要修改的 ...

  10. 深入IO 想学必看!受益匪浅哦~

    一:IO流概述 IO流简单来说就是Input和Output流,IO流主要是用来处理设备之间的数据传输,Java对于数据的操作都是通过流实现,而Java用于操作流的对象都在IO包中. 分类: 按操作数据 ...