【USACO2006 Mar】滑雪缆车 skilift
【USACO2006 Mar】 滑雪缆车 skilift
Time Limit 1000 ms
Memory Limit 131072 KBytes
Description
科罗拉多州的罗恩打算为奶牛建造一个滑雪场,为此要在山上规划一条缆车线路。
整座山可以用一条折线来描述,该折线有N个拐点,起点是1,终点是N。每个拐点的高度为Hi,相邻两个拐点之间的水平距离都是1。
缆车线路必须从起点开始修建,结束于终点。中间可以选择一些拐点安放缆绳的支柱,安全标准有两点:第一,缆绳的跨度有限制——相邻支柱的水平距离不能超过K;第二,缆绳的高度有限制——两根支柱之间的钢丝视作笔直的,在这座山的任何位置,钢丝都不能低于山的高度,但允许缆绳紧贴在山坡上或恰好穿过某个山峰。支柱相对于拐点的高度不计。
为了节约,罗恩希望修建的支柱越少越好,请帮他规划一下吧!当然,起点和终点上是一定要修建支柱的。
Input
第一行:两个用空格分开的整数:N和K,2 ≤ N ≤ 5000,1 ≤ K ≤ N − 1
第二行到N + 1行:第i + 1行有一个整数Hi,0 ≤ Hi ≤ ${10^9}$
Output
第一行:单个整数,表示最少需要修建的支柱数量
Sample Input
13 4
0
1
0
2
4
6
8
6
8
8
9
11
12
Sample Output
5
Hint
样例解释:支柱设在 1、5、7、9、13 号点处是最优方案。如果只设在 1、5、9、13 上,那么5 到9 就会有钢丝低于山坡的高度。如果只在 1、7、13 上修建,虽然高度符合要求,但这两段支柱的水平距离都超过了K。
Solution
身为菜鸡,打算再写一道dp
这道题的状态还是较容易设计的,即f[i]表示到第i个拐点所需设置的最少支柱数
那么一看数据范围,2000!!!!!!!!!!!
这就可以放心地乱搞写转移方程了
只要在前面的拐点中找到水平距离小于等于k且在这两个拐点之间所有拐点都不会插♂断这条缆绳的拐点,在这些拐点中求min(f[j])再加上改点即可
然后挂方程:$f[i] = \min \left\{ {\left. {f[j]} \right\}} \right. + 1,{\rm{1}} < = j < = i - 1$且j满足以上条件
那么我们现在就只剩下最后一个问题,如何判断缆绳不会被插♂断呢?
我们可以先做一个预处理,以(0,0)为坐标原点,把每个拐点写成一个点,显然,如果两个点之间没有点可以把缆绳插♂断,那么这两个点的所在的直线的斜率一定比前面那个点到两点之间每个点的斜率都要大
我们只需要用一个bool数组$b\left[ i \right]\left[ j \right]$来记录下第i个拐点是否能够达到第j个拐点
这样就能完美解决这道题了OwO
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
bool b[][];
int f[],a[];
double x=1e-;
bool check(double a,double b){return abs(a-b)<=x;}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
for (int i=;i<=n;i++){
double lim=-2147483640.0;
for (int j=i+;j<=n;j++) {
if (check(lim,1.0*(a[j]-a[i])/(j-i))||lim<=1.0*(a[j]-a[i])/(j-i)) b[i][j]=true;
lim=max(lim,1.0*(a[j]-a[i])/(j-i));
}
}
f[]=;
for (int i=;i<=n;i++){
f[i]=;
for (int j=;j<=i-;j++)
if (b[j][i]&&i-j<=k) f[i]=min(f[i],f[j]+);
}
printf("%d",f[n]);
return ;
}
【USACO2006 Mar】滑雪缆车 skilift的更多相关文章
- [BZOJ1659][Usaco2006 Mar]Lights Out 关灯
[BZOJ1659][Usaco2006 Mar]Lights Out 关灯 试题描述 奶牛们喜欢在黑暗中睡觉.每天晚上,他们的牲口棚有L(3<=L<=50)盏灯,他们想让亮着的灯尽可能的 ...
- Bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声 单调栈
1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 631 Solved: 445[Submi ...
- BZOJ1657: [Usaco2006 Mar]Mooo 奶牛的歌声
1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 489 Solved: 338[Submi ...
- 1657: [Usaco2006 Mar]Mooo 奶牛的歌声
1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 526 Solved: 365[Submi ...
- bzoj1722: [Usaco2006 Mar] Milk Team Select 产奶比赛 树形dp
题目链接 bzoj1722: [Usaco2006 Mar] Milk Team Select 产奶比赛 题解 dp[i][j][0 / 1] 以i为根的子数中 相邻点对选了j个的最大价值 代码 #i ...
- 1722: [Usaco2006 Mar] Milk Team Select 产奶比赛
1722: [Usaco2006 Mar] Milk Team Select 产奶比赛 https://www.lydsy.com/JudgeOnline/problem.php?id=1722 分析 ...
- [Usaco2006 Mar]Mooo 奶牛的歌声(单调栈裸题)
1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 961 Solved: 679[Submi ...
- [BZOJ1721][Usaco2006 Mar]Ski Lift 缆车支柱
Description Farmer Ron in Colorado is building a ski resort for his cows (though budget constraints ...
- luogu 4909 [Usaco2006 Mar]Ski Lift 缆车支柱 动态规划
可以出模拟赛T1? #include <bits/stdc++.h> #define N 5002 #define inf 1000000 #define setIO(s) freopen ...
随机推荐
- buf.writeDoubleBE()函数详解
buf.writeDoubleBE(value, offset[, noAssert]) buf.writeDoubleLE(value, offset[, noAssert]) value {Num ...
- mess系统 开发技术,需求整理
1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页 ...
- 正确的在循环list的时候删除list里面的元素
s = [1,2,3,4,5] for i in s: s.remove(i) print(s) 输出结果:[2, 4] 1.当第一次删除后,后面的元素会前移,此时s=[2,3,4,5], 2.然 ...
- String类的获取功能
/* * String类的获取功能: * int length():获取字符串的长度,其实也就是字符个数 * char charAt(int index):获取指定索引处的字符 * int index ...
- Apache 流框架 Flink,Spark Streaming,Storm对比分析(2)
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 2.Spark Streaming架构及特性分析 2.1 基本架构 基于是spark core的spark s ...
- noip模拟赛 洗衣
分析:好神的一道题啊.对每棵树建个图跑一下floyd可以有40分,想要打出正解就得对树有比较深的认识了. 每次新生成一棵树都是由两棵树i,j拼成的,答案为原来两棵树的答案和+i中每个点到j中每个点的距 ...
- poj 2404 中国邮递员问题 欧拉回路判定+状压dp
/* 状压dp 邮递员问题:求经过任意点出发经过每一条边一次并回到原点. 解法:1.如果是欧拉回路那么就是所有的边的总和. 2.一般的解法,找出所有的奇度顶点,任意两个顶点匹配,即最小完美匹配,可用状 ...
- chrome源代码目录结构简介(版本4.1.249.1059)
为了对庞大的源码项目进行分析,先对源码目录树作一个简单的介绍,粗略的了解一下各个模块的功能分布情况,chrome源代码src目录下的结构如下图: app:该目录下的代码主要是和各个操作系统平台相关的应 ...
- 转载 字符串hash
转载自:http://www.cnblogs.com/jiu0821/p/4554352.html 求一个字符串的hash值: •现在我们希望找到一个hash函数,使得每一个字符串都能够映射到一个整数 ...
- [bzoj2657][Zjoi2012]旅游 journey_ 对偶图_树形dp
旅游 bzoj-2657 Zjoi-2012 题目大意:题目链接 注释:$1\le K\le 2\cdot 10^5$. 想法:这题... 感觉和上一个题的提示有些类似,就是题目生怕你不知道这是一道对 ...