日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

帮助同学DP

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

簡(jiǎn)單DP題

Problem Description

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

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

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

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

Input

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

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

Output

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

Sample Input:

4 2 5 3 3 5

Sample Output:
64

分析
狀態(tài)表示:dp[i][j]表示i個(gè)人分成j天幫助所獲得的能力值
狀態(tài)轉(zhuǎn)移
把k個(gè)人分成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個(gè)人和剩下的人,//最少是j-1個(gè)人,因?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個(gè)人分成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個(gè)人和剩下的人 dp[i][j]=max(dp[i][j],dp[k][j-1]*(sum[i]-sum[k]));} } cout<<dp[n][m];return 0; }

總結(jié)

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

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