【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 ...
随机推荐
- odoo domain详解
参考的以下文档: luohuayong:Odoo domain写法及运用 baimo:odoo domain表达式 1.domain 表达式规则 最简单的格式:[('字段名','操作符',值)] 例: ...
- dual boot
https://askubuntu.com/questions/1031993/how-to-install-ubuntu-18-04-alongside-windows-10 https://www ...
- BZOJ 1012 洛谷1198 最大数 maxnumber
用线段数维护即可 #include<cstdio> #include<algorithm> #define ls (cur<<1) #define rs (cur& ...
- java使用JNA框架调用dll动态库
这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative.其中JNA调用DLL是最方便的. ·JNI ·JNA ·JNative java使用 JNI来调用dll动态 ...
- hadoop 3.0.0新特性
1.Minimum required Java version increased from Java 7 to Java 8 java最低支持版本变成java8 2.Support for eras ...
- HDU 4780 Candy Factory
Candy Factory Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ...
- HDU 1228 字符串到数字的转化
一道水题,练练字符串的输入输出 #include <cstdio> #include <cstring> using namespace std; ] , s2[]; int ...
- 页面加载即执行JQuery的三种方法
[1]$(function( ){ }): $(function(){ $("#name").click(function(){ //adding your code here } ...
- [转]SQL Server编程:SMO介绍
转自:周公 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文 ...
- ISO和焦距
要说什么是ISO还要从传统胶片相机说起,ISO称作为感光度,它是衡量传统相机所使用胶片感光速度的国际统一指标,其反映了胶片感光时的速度(其实是银元素与光线的光化学反应速率).而对于现在并不使用胶片的数 ...