題目描述
有一種別樣「小貓釣魚」撲克遊戲。有 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 還有幾本書沒有看完 這...