zoukankan      html  css  js  c++  java
  • 洛谷 P2904 [USACO08MAR]跨河River Crossing

    题目

    动规方程 f[i]=min(f[i],f[i−j]+sum)

    我们默认为新加一头牛,自占一条船。想象一下,它不断招呼前面的牛,邀请它们坐自己这条船,当且仅当所需总时间更短时,前一头奶牛会接受邀请,最多邀请前面的所有奶牛一起坐这条船。

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 using namespace std;
     5 const int maxn=2505;
     6 int n,m,mt[maxn],f[maxn];
     7 int main(){
     8     scanf("%d%d",&n,&m);
     9     for(int i=1;i<=n;i++)scanf("%d",&mt[i]);
    10     memset(f,101,sizeof(f));
    11     f[0]=0;
    12     for(int i=1;i<=n;i++){
    13         int sum=2*m;
    14         for(int j=1;j<=i;j++){
    15             sum+=mt[j];
    16             f[i]=min(f[i],f[i-j]+sum);
    17         }
    18     }
    19     printf("%d",f[n]-m);
    20     return 0;
    21 }
  • 相关阅读:
    百度之星初赛 A
    百度之星 初赛 BC
    2016 百度之星资格赛
    codeforces 749
    codeforces 785
    HDU 4617
    网络流 poj 2195
    网络流 poj 3436 poj 3281
    codeforces 780 C
    idea激活
  • 原文地址:https://www.cnblogs.com/hanruyun/p/8536235.html
Copyright © 2011-2022 走看看