1571. [Usaco2009 Open]滑雪课Ski
可以想到 $dp$,设 $f[i][j]$ 表示当前等级为 $i$,时间为 $j$ 的最大滑雪次数
显然上课不会上让自己等级降低的课,所以第一维 $i$ 满足无后效性
然后直接枚举 $i,j$,对于每个时间 $j$ ,考虑选择滑雪,因为划不同的坡得到的价值都是 $1$,所以直接取当前能划的时间最少的坡就行了
每个时间 $j$ 枚举完以后再考虑上课,只要考虑能增加等级的课就好了
注意不合法的状态是 $-INF$
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
typedef long long ll;
using namespace std;
typedef long long ll;
inline ll read()
{
ll x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=1e4+,M=,INF=1e9+;
int T,n,m,f[M][N],ans;
struct Class{
int s,t,a;
}C[M];
struct Hillside{
int tim,lev;
inline bool operator < (const Hillside &tmp) const {
return lev<tmp.lev;
}
}H[N];
int main()
{
T=read(),n=read(),m=read(); int a,b,c,mxlev=;
for(int i=;i<=n;i++)
{
a=read(),b=read(),c=read();
C[i]=(Class){a,b,c}; mxlev=max(mxlev,c);
}
for(int i=;i<=m;i++)
H[i].lev=read(),H[i].tim=read();
sort(H+,H+m+);
memset(f,~0x3f,sizeof(f));//不合法默认-INF
f[][]=;
int L=,tim=INF;//tim是目前耗时最小的坡需要的时间
for(int i=;i<=mxlev;i++)
{
while(H[L+].lev<=i&&L<m) L++,tim=min(tim,H[L].tim);//坡已经按等级排序了
for(int j=;j<=T;j++)
{
if(j+tim<=T) f[i][j+tim]=max(f[i][j+tim],f[i][j]+);//滑雪,注意时间不能超过T
f[i][j+]=max(f[i][j+],f[i][j]);/*当然也可以什么都不做*/ ans=max(ans,f[i][j]);//更新ans
}
for(int j=;j<=n;j++)
if(C[i].a>i&&C[i].s+C[i].t<=T)//只考虑能增加等级的课,时间也要合法
f[C[i].a][C[i].s+C[i].t]=max(f[C[i].a][C[i].s+C[i].t],f[i][C[i].s]);//上课
}
printf("%d\n",ans);
return ;
}
1571. [Usaco2009 Open]滑雪课Ski的更多相关文章
- BZOJ——1571: [Usaco2009 Open]滑雪课Ski
http://www.lydsy.com/JudgeOnline/problem.php?id=1571 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: ...
- BZOJ 1571: [Usaco2009 Open]滑雪课Ski
Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S& ...
- 【BZOJ】1571: [Usaco2009 Open]滑雪课Ski
[算法]动态规划 [题解]yy出了O(1w log 1w)的算法. 将雪坡排序预处理出g[i]表示能力值为i的最短时长雪坡. 这样就可以定义work(t,c)表示时长t能力c的最多滑雪数量,work( ...
- bzoj 1571: [Usaco2009 Open]滑雪课Ski【dp】
参考:https://blog.csdn.net/cgh_andy/article/details/52506738 没有get到什么重点的dp--做的莫名其妙 注意滑雪一个坡可以滑很多次 设f[i] ...
- [bzoj1571][Usaco2009 Open]滑雪课Ski
题目描述 Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S<=100 ...
- 【贪心优化dp决策】bzoj1571: [Usaco2009 Open]滑雪课Ski
还有贪心优化dp决策的操作…… Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里 ...
- bzoj 1571: [Usaco2009 Open]滑雪课
http://www.lydsy.com/JudgeOnline/problem.php?id=1571 dp[i][j]表示前i个时间,能力为j所能达到得最大滑雪次数 预处理出,需要能力$<= ...
- bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski
http://www.lydsy.com/JudgeOnline/problem.php?id=1571 DP不一定全部全状态转移 贪心的舍去一些不合法的反而更容易转移 在一定能力范围内,肯定滑雪所需 ...
- [USACO2009 OPEN] 滑雪课 Ski Lessons
洛谷P2948 看到题目就觉得这是动规但一直没想到如何状态转移……看了别人的题解之后才有一些想法 f[i][j]:前i单位时间能力值为j可以滑的最多次数 lessons[i][j]:结束时间为i,获得 ...
随机推荐
- Sql 统计一个表有多少列
SELECT COUNT(syscolumns.name) FROM syscolumns , sysobjects WHERE syscolumns.id = sysobjects.id AND s ...
- 奇虎360的开源OpenResty Windows版本
https://github.com/LomoX-Offical/nginx-openresty-windows
- 04机器学习实战之朴素贝叶斯scikit-learn实现
In [8]: import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from sklearn.pre ...
- 狼人杀校园升级版:学霸大战学渣 Who is the king of examination!
之前在微博上看到一个很老的段子 写道 天黑请闭眼.学霸请睁眼,学霸请答题,好的学霸请闭眼:学渣请睁眼,学渣请坐弊,好的学渣请闭眼:监考老师请睁眼,监考老师请确定坐弊考生,监考老师请统一意见,好的监考老 ...
- shell 数组中 @ 跟 * 的区别
关于在shell脚本中数组变量中 “*”跟 “@” 区别 “*”当变量加上“” 会当成一串字符串处理. “@”变量加上“” 依然当做数组处理. 在没有加上“” 的情况下 效果是等效的. #!/bin/ ...
- Java 根据银行卡号获取银行名称以及图标
转 https://blog.csdn.net/N_007/article/details/78835526 参考 CNBankCard 中国各大银行卡号查询 一.支付宝接口获取名称 根据 卡号 获取 ...
- TextView控件常用属性
常用属性 android:id——控件ID android:layout_width——控件宽度 android:layout_height——控件高度 android:text——文本内容 andr ...
- Android中对Apk加固(加壳)续篇之---对Native层(so文件)进行加固
有人说Android程序用Java代码写的,再怎么弄都是不安全的,很容易破解的,现在晚上关于应用加固的技术也很多了,当然这些也可以用于商业发展的,梆梆加密和爱加密就是很好的例子,当然这两家加固的Apk ...
- 安卓环境home assistant搭建
准备搞个智能家居玩玩 先从home assistant(后面简写为HASS)开始吧 莫得树莓派,拿旧手机凑活一下 准备材料: root过的安卓机 一.安卓机Linux环境搭建 个人习惯不详细写基础环境 ...
- UX168办公本地环境维护记录
上班到公司 1.打考勤靠.或处理考勤异常 2.钉钉 3.邮件. 4.禅道系统 5.开启nginx.node.monogo服务 5.1.开启nginx服务 /etc/init.d/apache2 sto ...