UOJ#244-[UER#7]短路【贪心】
生活随笔
收集整理的這篇文章主要介紹了
UOJ#244-[UER#7]短路【贪心】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
正題
題目鏈接:http://uoj.ac/problem/244
題目大意
n+1n+1n+1個(gè)矩陣如下圖所示
每一層的格子有相同的延時(shí),現(xiàn)在加一些平行于坐標(biāo)軸的導(dǎo)線,求左上到右下的最小延遲。
解題思路
可以知道最優(yōu)解一點(diǎn)是走到某個(gè)矩陣的左上角然后走這個(gè)矩陣到右下角然后到終點(diǎn)。
設(shè)fif_ifi?表示走到iii的左上角的最小延遲,顯然有fi=fi?1+min{aj}(1≤j<i)f_{i}=f_{i-1}+min\{a_j\}(1\leq j<i)fi?=fi?1?+min{aj?}(1≤j<i)
遞推即可。
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=1e5+10; ll n,a[N],f[N],num,ans; int main() {scanf("%lld",&n);num=ans=1e19;for(ll i=n;i>=0;i--)scanf("%lld",&a[i]);f[0]=a[0];num=a[0];for(ll i=1;i<=n;i++){f[i]=f[i-1]+a[i]+num;num=min(num,a[i]);}for(ll i=0;i<=n;i++)ans=min(ans,(f[i]+(n*2-i*2)*a[i])*2-a[i]);printf("%lld",ans); }總結(jié)
以上是生活随笔為你收集整理的UOJ#244-[UER#7]短路【贪心】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 星际争霸电脑配置要求(星际争霸电脑配置)
- 下一篇: P3462-[POI2007]ODW-W