【算法】动态规划

【题解】yy出了O(1w log 1w)的算法。

将雪坡排序预处理出g[i]表示能力值为i的最短时长雪坡。

这样就可以定义work(t,c)表示时长t能力c的最多滑雪数量,work(t,c)=t/g[c]。

然后将课程按结束时间排序。

f[i]=f[j]+work(a[i].begin-a[j].end,g[a[j].c])。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
const int maxn=,inf=0x3f3f3f3f;
int f[maxn],T,n,m,g[maxn];
struct cyca{int begin,end,c;}a[maxn];
struct cycb{int c,d;}b[maxn]; int read()
{
char c;int s=,t=;
while(!isdigit(c=getchar()))if(c=='-')t=-;
do{s=s*+c-'';}while(isdigit(c=getchar()));
return s*t;
}
bool cmpb(cycb a,cycb b)
{return a.c<b.c;}
bool cmpa(cyca a,cyca b)
{return a.end<b.end;}
int main(){
T=read();n=read();m=read();
for(int i=;i<=n;i++){
a[i].begin=read()+;
a[i].end=read();a[i].end+=a[i].begin-;
a[i].c=read();
}
for(int i=;i<=m;i++){
b[i].c=read();
b[i].d=read();
}
sort(b+,b+m+,cmpb);
int num=inf;
for(int i=;i<=m;i++){
num=min(num,b[i].d);
g[b[i].c]=num;
}
g[]=-;
for(int i=;i<=;i++)if(!g[i])g[i]=g[i-];
sort(a+,a+n+,cmpa);
a[].c=;
n++;a[n].begin=a[n].end=T+;//a[n].c=inf;
for(int i=;i<=n;i++){
f[i]=;
for(int j=;j<=i-;j++){
if(a[j].end>=a[i].begin)break;
//if(a[j].c>=a[i].c)continue;
f[i]=max(f[i],f[j]+(~g[a[j].c]?(a[i].begin-a[j].end-)/g[a[j].c]:));
}
}
printf("%d",f[n]);
return ;
}

【BZOJ】1571: [Usaco2009 Open]滑雪课Ski的更多相关文章

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

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

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

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

  3. bzoj 1571: [Usaco2009 Open]滑雪课Ski【dp】

    参考:https://blog.csdn.net/cgh_andy/article/details/52506738 没有get到什么重点的dp--做的莫名其妙 注意滑雪一个坡可以滑很多次 设f[i] ...

  4. bzoj 1571: [Usaco2009 Open]滑雪课

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 dp[i][j]表示前i个时间,能力为j所能达到得最大滑雪次数 预处理出,需要能力$<= ...

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

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

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

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

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

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

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

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

  9. [USACO2009 OPEN] 滑雪课 Ski Lessons

    洛谷P2948 看到题目就觉得这是动规但一直没想到如何状态转移……看了别人的题解之后才有一些想法 f[i][j]:前i单位时间能力值为j可以滑的最多次数 lessons[i][j]:结束时间为i,获得 ...

随机推荐

  1. 网页设计简史看设计&代码“隔膜”

    本文来自网易云社区 作者:马宝 设计与代码之间隔膜所在?既然你诚心诚意地问了,我就大发慈悲地告诉你.为了防止地球被破坏,为了维护世界的和平,为了贯彻爱与真实的邪恶~,我是穿梭在前端与设计之间爱与美丽的 ...

  2. VectorDrawable在Android中的配置

    一.让Android支持VectorDrawable apply plugin: 'com.android.application' android { defaultConfig { vectorD ...

  3. Python 3基础教程19-模块导入语法

    本文开始介绍模块导入的一些基本语法,我们现在还在Python自带的IDLE编辑器里写Python代码,如果你要需要一个功能,例如build-in的模块,那么你就需要先导入这个模块,然后才能使用这个模块 ...

  4. java 生成简单word(利用Itext工具),生成简单Excel,以及下载笔记

    1.java 生成简单word(包含图片表格) pom中加入itext 相关依赖 <dependency> <groupId>com.lowagie</groupId&g ...

  5. HTTPS初始

    https会话 1客户端 2服务器端 1 ---http三次握手--- 2 1<--------------->2 协商建立ssl会话 选择加密协议 sslv3 1 <------- ...

  6. DFS(6)——hdu1342Lotto

    一.题目回顾 题目链接:Lotto Sample Input 7 1 2 3 4 5 6 7 8 1 2 3 5 8 13 21 34 0 Sample Output 1 2 3 4 5 6 1 2 ...

  7. hadoop worldcount小程序

    首先在hadoop中建立input文件夹放几个文件,里边写点东西.比如我放了三个,分别写的是 第一个 hello hadoop bye hadoop 第二个 hello world bye world ...

  8. hash function比较

    http://blog.csdn.net/kingstar158/article/details/8028635 由于工作需要,针对千万级别的数据,使用stl::map着实存在着效率问题,最后使用bo ...

  9. Python创建目录文件夹

    Python对文件的操作还算是方便的,只需要包含os模块进来,使用相关函数即可实现目录的创建. 主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.mak ...

  10. calendar components

    calendar components 日历 angular, react, vue ??? react https://github.com/intljusticemission/react-big ...