日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划

發布時間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目


1613: [Usaco2007 Jan]Running貝茜的晨練計劃

Time Limit:?5 Sec??Memory Limit:?64 MB

Description

奶牛們打算通過鍛煉來培養自己的運動細胞,作為其中的一員,貝茜選擇的運動方式是每天進行N(1 <= N <= 10,000)分鐘的晨跑。在每分鐘的開始,貝茜會選擇下一分鐘是用來跑步還是休息。 貝茜的體力限制了她跑步的距離。更具體地,如果貝茜選擇在第i分鐘內跑步,她可以在這一分鐘內跑D_i(1 <= D_i <= 1,000)米,并且她的疲勞度會增加 1。不過,無論何時貝茜的疲勞度都不能超過M(1 <= M <= 500)。如果貝茜選擇休息,那么她的疲勞度就會每分鐘減少1,但她必須休息到疲勞度恢復到0為止。在疲勞度為0時休息的話,疲勞度不會再變動。晨跑開始時,貝茜的疲勞度為0。 還有,在N分鐘的鍛煉結束時,貝茜的疲勞度也必須恢復到0,否則她將沒有足夠的精力來對付這一整天中剩下的事情。 請你計算一下,貝茜最多能跑多少米。

Input

* 第1行: 2個用空格隔開的整數:N 和 M

* 第2..N+1行: 第i+1為1個整數:D_i

Output

* 第1行: 輸出1個整數,表示在滿足所有限制條件的情況下,貝茜能跑的最大 距離

Sample Input

5 2
5
3
4
2
10


Sample Output

9

輸出說明:

貝茜在第1分鐘內選擇跑步(跑了5米),在第2分鐘內休息,在第3分鐘內跑
步(跑了4米),剩余的時間都用來休息。因為在晨跑結束時貝茜的疲勞度必須
為0,所以她不能在第5分鐘內選擇跑步。


題解


這道題一開始用主動轉移竟然Wa了,為了珍惜提交次數,我還是寫了被動轉移。f[i][j]表示i分鐘j的疲勞能做到的最大距離。

方程

f[i][j]=max(f[i][j],f[i-1][j-1]+di[i])?

f[i][0]=max(f[i][0],f[i-j][j])


代碼


/*Author:WNJXYK*/ #include<cstdio> #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<queue> #include<set> #include<map> using namespace std;#define LL long long #define Inf 2147483647 #define InfL 10000000000LLinline void swap(int &x,int &y){int tmp=x;x=y;y=tmp;} inline void swap(LL &x,LL &y){LL tmp=x;x=y;y=tmp;} inline int remin(int a,int b){if (a<b) return a;return b;} inline int remax(int a,int b){if (a>b) return a;return b;} inline LL remin(LL a,LL b){if (a<b) return a;return b;} inline LL remax(LL a,LL b){if (a>b) return a;return b;}int n,m; int di[10005]; int f[10005][505]; int main(){scanf("%d%d",&n,&m);for (int i=1;i<=n;i++) scanf("%d",&di[i]);memset(f,-127,sizeof(f));f[0][0]=0;for (int i=1;i<=n;i++){f[i][0]=f[i-1][0];for (int j=1;j<=m;j++){if (j<i) f[i][0]=remax(f[i][0],f[i-j][j]);f[i][j]=remax(f[i][j],f[i-1][j-1]+di[i]);}}printf("%d\n",f[n][0]);return 0; }


轉載于:https://www.cnblogs.com/WNJXYK/p/4063926.html

總結

以上是生活随笔為你收集整理的BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。