欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【拼多多】20250309筆試真題第3題記錄

因為之前坐過二維dp(后來才知道這其實叫序列dp)的題,所以看到這個題還是有一些思路的,但是這個題的關(guān)鍵點在于初始化,一定要初始化非法狀態(tài),不能一上來就初始化全為0

這題還是有收獲的

不過還是那句話,菜就多練

#include <bits/stdc++.h>
using namespace std;

int main(int argc, char const* argv[]) {
    int n = 0, m = 0;
    cin >> n >> m;
    int a[n] = {0};
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    // 在 m 分鐘內(nèi)讀完 n 頁, 每一分鐘最多讀 2 頁
    if (n > 2 * m) {
        cout << "-1";
        return 0;
    }
    double dp[n + 1][m + 1];
    // dp[i][j]表示第i分鐘讀了j頁能獲取到最大知識量
    // 只要在 m 分鐘內(nèi)讀完 n 頁就可以
    // 最大知識量顯然為max({dp[1][n], dp[2][n], dp[3][n], ... dp[m][n]})

    // 關(guān)鍵的初始化
    // dp[i][j] = -1 表示不合法狀態(tài), 比如說 1 分鐘最多讀完第 2 頁, 不可能讀完第 3 頁
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <=n; j++) {
            dp[i][j] = -1.0;
        }
    }
    // 第 0 分鐘讀完 0 頁獲得的知識量為 0.0
    dp[0][0] = 0.0;
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            // 注意這里一開始的 i = j = 1
            // 也就是dp[1][1] 表示第 1 分鐘讀完第 1 頁能獲得的最大知識量
            // 只讀一頁且狀態(tài)合法
            if (dp[i - 1][j - 1] > -1) {
                dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + a[j - 1]);
            }
            // 讀 2 頁且狀態(tài)合法
            else if (j > 1 && dp[i - 1][j - 2] > -1) {
                dp[i][j] = max(dp[i][j], dp[i - 1][j - 2] + (a[j - 1] + a[j - 2]) / 2);
            }
        }
    }

    double ans = 0.0;
    for (int i = 1; i <= m; i++) {
        ans = max(ans, dp[i][n]);
    }
    cout << fixed << setprecision(1) << ans;

    system("pause");
    return 0;
}

全部評論

相關(guān)推薦

評論
4
2
分享

創(chuàng)作者周榜

更多
牛客網(wǎng)
??推髽I(yè)服務(wù)