zoukankan      html  css  js  c++  java
  • 【UOJ244】【UER #7】短路

    题解:

    感觉贪心水平有所提高。。

    首先比较显然的事情是我们可以枚举最深进行到哪一层

    我们会发现,当且仅当该层是最小值才会使用决策,

    并且是从该层的左上,走到右下

    另外中间步骤就是(好难描述啊)一个单调下降序列,每个会走最多的向右走的步数,然后中间的点只走一次  (这句话应该正常人是无法理解的)

    但是处理起来还是比较简单的,我们考虑从上一层到这一层实际上就是有一个多往右走一格,所以维护前缀最小值

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define IL inline
    #define rint register ll
    #define rep(i,h,t) for (rint i=h;i<=t;i++)
    #define dep(i,t,h) for (rint i=t;i>=h;i--)
    const ll N=2e5;
    const ll INF=1e18;
    ll a[N],n,f[N],ans=INF;
    int main()
    {
      freopen("1.in","r",stdin);
      freopen("1.out","w",stdout);
      ios::sync_with_stdio(false);
      cin>>n;
      rep(i,1,n+1) cin>>a[i];
      ll mina=INF;
      dep(i,n+1,1)
      {
        if (i==n+1) f[i]=a[i];
        else f[i]=f[i+1]+a[i]+mina;
        if (mina>=a[i])
        {
          ans=min(ans,f[i]*2+(4*i-5)*a[i]);
          mina=a[i];
        }
      }
      cout<<ans<<endl;
      return 0;
    }
  • 相关阅读:
    以太坊:区块(Blocks)
    以太坊:事件日志 (Event Logs)
    以太坊:节点代理(Geth/Parity Proxy) APIs
    以太坊:代币信息 Token
    以太坊:Etherscan API 约定
    以太坊:账号(Account)
    以太坊:智能合约(Contracts)
    我的友情链接
    我的友情链接
    我的友情链接
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/9410815.html
Copyright © 2011-2022 走看看