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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

帮助同学DP

發(fā)布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 帮助同学DP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡單DP題

Problem Description

Yukina非常樂于助人,他每天都會抽出時間幫助一些同學(xué)解決代碼問題,因?yàn)閅ukina很古板,講究"先來后到"的原則,所以Yukina不會先幫助后來找他的同學(xué)。

如今有n個同學(xué)需要他的幫助,盡管他非常想一天之類幫助全部人,但畢竟精力有限,于是他決定分m天來幫助他們

依據(jù)事情的重要性,Yukina幫助不同同學(xué)會有不同的能力值。而Yukina獲得的總的能力值為每天獲得的能力值的乘積

現(xiàn)在給出n和m,以及幫助完各同學(xué)時獲得的能力值,求Yukina能獲得的最大能力值。

Input

輸入第一行兩個整數(shù)n,m(1 <= m <= min(n,20); 1 <= n <= 20)

第二行為n個整數(shù),表示幫助這個同學(xué)的獲得的能力值,每一個快樂值不大于5

Output

輸出Yukina能獲得的最大能力值

Sample Input:

4 2 5 3 3 5

Sample Output:
64

分析
狀態(tài)表示:dp[i][j]表示i個人分成j天幫助所獲得的能力值
狀態(tài)轉(zhuǎn)移
把k個人分成j-1天完成幫助,剩下的人在另一天完成幫助,取兩者的最大值。

dp[i][j]=max(dp[i][j],dp[k][j-1]*(sum[i]-sum[k]));

三層循環(huán)

for(int i=1;i<=n;i++)//表示人數(shù)for(int j=1;j<=m;j++){//分成j天幫助for(int k=j-1;k<i;k++){//表示分成k個人和剩下的人,//最少是j-1個人,因?yàn)榉殖蒵-1天幫助

代碼

#include<iostream> #include<map> #include<string> #include<cstdlib> #include<string.h> using namespace std;map<string,int> mp; string s; int m,n,a[30],sum[30]; long long dp[30][30];//dp[i][j]表示i個人分成j天幫助獲得的能力值 int main(){cin>>n>>m;sum[0]=0;for(int i=1;i<=n;i++){cin>>a[i];sum[i]=sum[i-1]+a[i]; }memset(dp,0,sizeof(dp));for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)dp[i][j]=1; //cout<<dp[i][j]<<" ";for(int i=1;i<=n;i++)//表示人數(shù)for(int j=1;j<=m;j++){//分成j天幫助for(int k=j-1;k<i;k++){//表示分成k個人和剩下的人 dp[i][j]=max(dp[i][j],dp[k][j-1]*(sum[i]-sum[k]));} } cout<<dp[n][m];return 0; }

總結(jié)

以上是生活随笔為你收集整理的帮助同学DP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。