2023年南海區甲組 撲克遊戲 poker

2022-09-07 14:15:12 字數 1128 閱讀 5929

題目描述

有一種別樣「小貓釣魚」撲克遊戲。有 n 張牌,每張牌都有乙個花色和點數。遊戲的規則:撲克接龍時,若前面有同樣花色的牌,你可以將這兩張牌連同之間的牌都取走,得到的分值為取走牌點數之和。這裡說的是可以,不是必須。給定撲克接龍的順序,求最多的得分。

輸入第一行乙個整數 n。

第二行 n 個整數,依次表示 1~n 張牌的花色。

第三行 n 個整數,依次表示 1~n 張牌的點數。

輸出乙個整數,為遊戲可以得到最大得分。

樣例輸入

1 2 1 2 3 2 3

1 4 3 4 3 4 5

樣例輸出

資料範圍限制

1<=n<=3000

思路:

求遊戲可以得到最大得分,閉著眼睛都想得到用動態規劃來解。

f[i]表示1~i的最大得分 ;

qzh[i]表示1~i的點數和。

那麼i~j區間的點數和為qzh[i]-qzh[j-1]。

第一層for列舉發f[i];

第二層列舉j~i區間點數和。

現在可推出動態轉移式:f[i]=max(f[i],f[j-1]+qzh[i]-qzh[j-1]);

**:

#include

using

namespace std;

int n,hs[

3005

],num[

3005

],qzh[

3005

],f[

3005

],ans;

intmain()

qzh[0]

=0;for

(int i=

1;i<=n;i++

)for

(int i=

1;i<=n;i++

)printf

("%d"

,f[n]);

fclose

(stdin);

fclose

(stdout);

return0;

}

寫博不易,請發現問題的大佬提出。

**保證正確,請留讚再走。

2023年南海區甲組 拆除橋墩 remove

題目描述 河的左岸到右岸之間有一座年久失修 已經廢棄的大橋,有 n 個橋墩,影響船隻通行。現在要拆除部分橋墩,使得通航能力最大,通航能力由最窄的地方決定的,這個地方有可能是岸與橋墩之間,也可以是橋墩之間。工程預算有限,只能拆除 m 個橋墩。如何安排工程,才能使得通航能力盡可能的大。輸入第一行包含三個...

2023年南海初中 取數

深度優先搜尋 一些剪枝,正解 記憶化搜尋。詳見 include include define max a,b a b?a b define file x freopen x in r stdin freopen x out w stdout using namespace std const int...

2023年總結,2023年展望

2018年已經過去13天,遲來的年度總結。仔細想想2018年,自己究竟了做了什麼?還有什麼事沒有做?這一年是否虛度?這一年自己是否又滿意?2018年,完成的事情2018年,沒做的事情 1 沒有好好沉澱下來,回顧 分析演算法題 2 沒有養成早睡早起的習慣 3 沒有鍛鍊好體魄 4 還有幾本書沒有看完 這...