zoukankan      html  css  js  c++  java
  • [BZOJ1721][Usaco2006 Mar]Ski Lift 缆车支柱

    日常吐槽:最大值赋太大79分卡了好久好久

    算法:DP

    分析:数学分析一下即可

    最优解肯定是介个样子的:

    抽象一点的话:

    也就是说两个点(i,j)之间如果能够连上线,则必定中间点对(i,k(k∈(i,j)))没有斜率比它(i,j)大的

    然后DP暴力更新,O(NM)---->O(N^2)

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define int long long
     6 using namespace std;
     7 inline int read(){
     8     char chr=getchar();    int f=1,ans=0;
     9     while(!isdigit(chr)) {if(chr=='-') f=-1;chr=getchar();}
    10     while(isdigit(chr))  {ans=(ans<<3)+(ans<<1);ans+=chr-'0';chr=getchar();}
    11     return ans*f;
    12 }int n,m,h[5005],dp[5005];long double k,maxn;
    13 signed main(){
    14     n=read(),m=read();for(int i=1;i<=n;i++)h[i]=read();
    15     for(int i=1;i<=n;i++)dp[i]=9223372036854775803ll;dp[1]=1;
    16     for(int i=1;i<=n;i++){
    17         maxn=-2147483647;
    18         for(int j=1;i+j<=n&&j<=m;j++)
    19             k=(h[i+j]-h[i])*1.0/(j*1.0),(k>=maxn)?(dp[i+j]=min(dp[i+j],dp[i]+1),maxn=k):1;
    20     }cout<<dp[n];
    21     return 0;
    22 }
  • 相关阅读:
    origin 8.5 曲线拟合,延长曲线范围
    赤手空拳编写C#代码
    Vmware 10安装MAC OS X 10.9备忘
    Contest 1445
    Contest 1428
    Contest 1435
    Contest 991
    CSP-SJX2019 解题报告
    【BZOJ4817】【SDOI2017】树点染色
    codeforce 804B Minimum number of steps
  • 原文地址:https://www.cnblogs.com/zhenglw/p/10491720.html
Copyright © 2011-2022 走看看