zoukankan      html  css  js  c++  java
  • 10.20T2 DP

    f[i][j]代表前 i 个机器人,当前高度为j的最小值

    因为比如下降的时候是由f[i-1][1~j]转过来的

    所以f[i][j]强行记录分f[i-1][1~j]的最小值

    然后转移一下

    我这次因为unique返回没有减1所以掉了20分,引以为戒

    code:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 using namespace std;
     6 int f[50050][1500],p[50050];
     7 int min0=0x3f3f3f3f;
     8 int read(){
     9     int x=0,f=1;
    10     char c=getchar();
    11     while(!isdigit(c)){
    12         if(c=='-')f=-1;
    13         c=getchar();
    14     }
    15     while(isdigit(c)){
    16         x=(x<<3)+(x<<1)+c-'0';
    17         c=getchar();
    18     }
    19     return x*f;
    20 }
    21 int main(){
    22     //freopen("robot.in","r",stdin);
    23     //freopen("robot.out","w",stdout);
    24     int n,m1,m2;
    25     n=read(),m1=read(),m2=read();
    26     int d[50006],cnt=0;
    27     for(int i=1;i<=n;i++){
    28         p[i]=read();
    29         d[i]=p[i];
    30     }
    31     sort(d+1,d+n+1);
    32     int k=unique(d+1,d+n+1)-d-1;
    33     for(int i=1;i<=n;i++){
    34         p[i]=lower_bound(d+1,d+k+1,p[i])-d;
    35     }
    36     memset(f,0x3f3f3f3f,sizeof f);
    37     f[0][1]=0; 
    38     for(int i=1;i<=n;i++){
    39         for(int j=1;j<=k;j++){
    40             int val=0;
    41             if(j>p[i])val=m1;
    42             if(j<p[i])val=m2;
    43             f[i][j]=f[i-1][j]+val;
    44             f[i][j]=min(f[i][j-1],f[i][j]);
    45         }
    46     }
    47     min0=f[n][k];
    48     memset(f,0x3f3f3f3f,sizeof f);
    49     f[0][k]=0;
    50     for(int i=1;i<=n;i++){
    51         for(int j=k;j>=1;j--){
    52             int val=0;
    53             if(j>p[i])val=m1;
    54             if(j<p[i])val=m2;
    55             f[i][j]=f[i-1][j]+val;
    56             f[i][j]=min(f[i][j],f[i][j+1]);
    57         }
    58     }
    59     cout<<min(min0,f[n][1]);
    60     return 0;
    61 }
    62 /*
    63 20 3 4
    64 5 9 8 7 4 6 8 7 1 3 2 4 8 7 5 9 6 8 7 4
    65 
    66 40
    67 */

    over

  • 相关阅读:
    Mysql-窗口函数
    aplly-lambda-map用法
    python-pymysql 操作数据库-创建-写入-多线程写入-读取-清空表
    graphviz安装
    sklearn-决策树
    pandas-烹饪指南
    Tomcat配置https
    azkaban 编译部署
    sqoop部署及使用
    spark面试题-1
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9821725.html
Copyright © 2011-2022 走看看