bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski
http://www.lydsy.com/JudgeOnline/problem.php?id=1571
DP不一定全部全状态转移
贪心的舍去一些不合法的反而更容易转移
在一定能力范围内,肯定滑雪所需时间越少越好
当课程的结束时间和能力值改变相同时,肯定课程越晚开始越好
预处理
late[i][j] 表示结束时间为i,能力值变成j的课程的最晚开始时间
mi[i] 表示在滑雪能力值<=i时,滑一次雪所需的最短时间
dp[i][j] 表示时间i,能力值为j时,最多的滑雪次数
f[i] 表示时间i最多的滑雪次数
喝可可:dp[i][j]=dp[i-1][j]
上课:dp[i][j]=f[late[i][j]]
滑雪:dp[i][j]=dp[i-mi[j]][j]+1
f[i]=max(dp[i][j])
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; #define N 101
#define M 10001 int dp[M][N],f[M]; int late[M][N],mi[N]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} int main()
{
int t,s,n;
read(t);
read(s);
read(n);
int start,last,turn;
for(int i=;i<=s;++i)
{
read(start);
read(last);
read(turn);
late[start+last][turn]=max(late[start+last][turn],start);
}
int need,tim;
memset(mi,,sizeof(mi));
for(int i=;i<=n;++i)
{
read(need);
read(tim);
mi[need]=min(mi[need],tim);
}
for(int i=;i<=;++i) mi[i]=min(mi[i],mi[i-]);
memset(dp,,sizeof(dp));
dp[][]=f[]=;
for(int i=;i<=t;++i)
for(int j=;j<=;++j)
{
dp[i][j]=dp[i-][j];
if(late[i][j]) dp[i][j]=max(dp[i][j],f[late[i][j]]);
if(i-mi[j]>=) dp[i][j]=max(dp[i][j],dp[i-mi[j]][j]+);
f[i]=max(f[i],dp[i][j]);
}
cout<<f[t];
}
bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski的更多相关文章
- [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千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划187:bzoj1770: [Usaco2009 Nov]lights 燈 (高斯消元解异或方程组+枚举自由元)
http://www.lydsy.com/JudgeOnline/problem.php?id=1770 a[i][j] 表示i对j有影响 高斯消元解异或方程组 然后dfs枚举自由元确定最优解 #in ...
- bzoj千题计划152:bzoj3405: [Usaco2009 Open]Grazing2 移动牛棚
http://www.lydsy.com/JudgeOnline/problem.php?id=3405 n个牛棚,n-1段 因为要求距离尽量大,而且尽可能多的为d 所以: 第1个牛棚一定在位置1 最 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
随机推荐
- Hibernate笔记④--一级二级缓存、N+1问题、saveorupdate、实例代码
一级缓存及二级缓存 一级缓存也是Session 缓存 一个链接用户的多次查询使用缓存 跨用户 则无缓存 hibernate自带的 get和load都会填充并利用一级缓存 二级缓 ...
- BNUOJ 52317 As Easy As Possible 树上倍增/主席树
题目链接: https://acm.bnu.edu.cn/v3/problem_show.php?pid=52317 As Easy As Possible Case Time Limit: 1000 ...
- es6箭头函数的注意要点
具有一个参数的简单函数 var single = a => a single('hello, world') // 'hello, world' 没有参数的需要用在箭头前加上小括号 var lo ...
- Powershell笔记之help about_XXX
<<about_Arrays>> 1. 一直好奇gettype()输出中的Name这一列的Object[]是什么意思,现在终于明白了,请看下面的例子: 2. GM的不同用法 $ ...
- linux ls文件颜色和底色设置
转帖 :linux ls文件颜色和底色设置 白色:表示普通文件蓝色:表示目录绿色:表示可执行文件红色:表示压缩文件浅蓝色:链接文件红色闪烁:表示链接的文件有问题黄色:表示设备文件灰色:表示其他文件 这 ...
- 数组 javaScript权威指南笔记
创建数组 var a=[1,2,3,4] var arr=new Array() var arr=new Array(10);//创建长度为10的数组 var arr=new Array(1,2, ...
- 官方下拉刷新控件SwipeRefreshLayout的使用
今天看博客,发现有了这个下拉刷新的控件,效果看上去还蛮好的,于是我也想研究的是使用一下,写个demo.其实使用很简单的,但就是为了能使用这个新组建我下了好久的更新,后来还是直接去官网下载最新的ADT得 ...
- JVM内存模型二
Java 中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个线程又单独的有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交 ...
- 反射就是获取该类的.class文件里面的方法,属性
反射就是获取该类的.class文件里面的方法,属性
- java传统的文件拷贝 相当于两个大缸需要通过一个勺子(字节数组)一点一点运过去