zoukankan      html  css  js  c++  java
  • Div3 595 E

    By Elevator or Stairs?

    简单的二维DP

    $f[i][j] $ 表示第 (i-1) 层使用 第(j) 种方法达到 第 (i) 所需要的最短时间,(j = 0) 代表 走楼梯,(j = 1) 电梯。

    (f[i+1][0]) 表示第 (i) 层使用 楼梯 到达 第(i+1) 层的最短时间

    只有当第(i) 层走楼梯,第 (i+1) 层走电梯的时候,才用加上 (c) 它是等待电梯的时候,

    如果 第 (i) 层已经在电梯里面,第(i+1) 不用等电梯就可以上去了,所以不用加 (c)

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 2e5 + 10;
    int n,c;
    int a[N],b[N],f[N][2]; // f1,0 不在电梯,f1,1 在电梯内
    int main(){
    	bool ok = 1;
    	cin >> n >> c;
    	for(int i = 1;i < n; ++i) cin >> a[i];
    	for(int i = 1;i < n; ++i) cin >> b[i];
    	memset(f,0x3f,sizeof f);
    	f[1][0] = 0,f[1][1] = c;
    	for(int i = 1;i < n; ++i){
    		f[i+1][0] = min(f[i+1][0],f[i][1] + a[i]);
    		f[i+1][0] = min(f[i+1][0],f[i][0] + a[i]);
    		f[i+1][1] = min(f[i+1][1],f[i][1] + b[i]);
    		f[i+1][1] = min(f[i+1][1],f[i][0] + b[i] + c);
    	}
    	for(int i = 1;i <= n; ++i) cout << min(f[i][0],f[i][1]) <<" ";
    	return 0;
    }
    
    
  • 相关阅读:
    JAVA流和File类
    JAVA的Socket
    JAVA反射
    JAVA线程
    JAVA集合
    052-214(新增70题2018)
    052-213(新增70题2018)
    052-212(新增70题2018)
    052-211(新增70题2018)
    052-210(新增70题2018)
  • 原文地址:https://www.cnblogs.com/lukelmouse/p/11744141.html
Copyright © 2011-2022 走看看