(中石油十)問題 L K(dp入門,水題)

2021-10-01 11:47:07 字數 2222 閱讀 8165

錢幣兌換問題的小變形

問題 l: k

題目描述

小 z 整理完房間時間已經不早了,簡單洗漱一下就**睡覺了,自從進入初三後小 z 已經有很久沒有做夢了,不做夢的主要原因是學習強度太大加上睡得較晚,一旦睡著就睡 得特別沉,沉到沒有夢的地步。今晚小 z 的大腦皮層特別興奮,小 z 回到賓館立刻開啟筆記本開始命題:

已知收銀員要找給小 z 的金 額 n、錢櫃裡的硬幣種類 k 以及 k 種硬幣的面額,計算有多少種不同的找零方法? 這裡的 「不同」是指所找零錢至少有一種硬幣的數量不相同。假設現在只有 2 種硬幣,一種面額是 5 分,另一種面額是 1 分,要找給小 z 的金額是 8 分錢,可以給小 z 找 1 個五分硬幣加3 個一分硬幣,或者找 8 個一分硬幣。用 3 個一分硬幣加 1 個五分硬幣本質上與 1 個五分硬幣加 3 個一分硬幣沒有任何區別,因此只可以用兩種不同的方式找出八分錢。

輸入輸入資料第一行有兩個用空格隔開的整數 n 和 k,其中 1≤n≤300,表示超市收銀員 要找給小 z 的金額,1≤k≤8,表示收銀員的錢櫃裡共有 k 種不同面額的硬幣。

第 2 到 k+1 行每行包含乙個正整數 ci,其中 1≤ci≤100,表示一種硬幣的面額,在輸入資料中硬幣 面額按降序排列(從最大到最小)。

不同種類的硬幣面額各不相同,每種硬幣都取之不盡 用之不竭。

輸出輸出資料僅有一行包含乙個整數,表示超市收銀員可能的找零方案數。答案保證不會 超出長整型範圍。需要注意的是如果沒有面額為 1 分的硬幣,有些金額將無法找零,此時 結果就輸出 0。

樣例輸入 copy

83 5

5025105

1樣例輸出 copy

159提示

樣例解釋

輸入詳解:收銀員要找給小 z 金額 83 分,共有 5 種硬幣,面額分別為:50,25,10, 5, 1

輸出詳解:以下是全部 159 種找零方案中的 前 15 種和最後一種:

0×50 0×25 0×10 0×5 83×1

0×50 0×25 0×10 1×5 78×1

0×50 0×25 0×10 2×5 73×1

0×50 0×25 0×10 3×5 68×1

0×50 0×25 0×10 4×5 63×1

0×50 0×25 0×10 5×5 58×1

0×50 0×25 0×10 6×5 53×1

0×50 0×25 0×10 7×5 48×1

0×50 0×25 0×10 8×5 43×1

0×50 0×25 0×10 9×5 38×1

0×50 0×25 0×10 10×5 33×1

0×50 0×25 0×10 11×5 28×1

0×50 0×25 0×10 12×5 23×1

0×50 0×25 0×10 13×5 18×1

0×50 0×25 0×10 14×5 13×1

……………………………………………

1×50 1×25 0×10 1×5 3×1

資料範圍

10%的資料滿足:n≤50,k≤3,ci≤10

30%的資料滿足:n≤100,k≤5,ci≤20

60%的資料滿足:n≤100,k≤7,ci≤50

100%的資料滿足:n≤300,k≤8,ci≤100

**題目太長我縮減一下。

1、有無限個k種貨幣,分別價值a[1],a[2],……a[k](放在乙個陣列中)。

2、用這些換成n元。

3、有多少種換法?

資料設很大,明擺深搜超時,逼你玩dp。

直接上**。

#include

using

namespace std;

typedef

long

long ll;

const

int inf =

(int

)1e9+7

;const

int maxn =

32767+10

;//假設 n<32767

ll dp[maxn]

;int

main()

cout<

}

這裡明顯可以看到我把之前一篇文章的錢幣兌換問題**複製了一下(注釋還在)。然後細節改改,比較前一篇文章,自己找不同吧。

個人覺得:把錢幣兌換問題看到01揹包明顯不合理,貨幣是無限個的,除錯過程中遞增式跟這沒什麼關係,

糾錯看過揹包九講後,這種題雖然不是01揹包問題,但屬於完全揹包問題(這裡不細講)

中石油訓練賽 姓氏 思維 水題

在乙個很大的課室裡,裡面有很多學生在聽課。l老師挑選了其中的n個不同的學生起立回答問題,l老師對起立的每乙個學生都是問同樣的問題 在本課室裡,和你同姓的學生有多少人 不包括你自己 這n個起立的同學的回答如下 第1位起立的同學回答 和我同姓的,除了我之外,本課室裡還有a 1 個學生。第2位起立的同學回...

(中石油六)問題E 積木(dp法)

問題 積木 問題 e 積木 時間限制 1 sec 記憶體限制 128 mb 題目描述 喬治喜歡玩積木。目前他有n塊積木,編號為1到n。所有積木的高度都是正整數,第i塊積木高度是h i 喬治喜歡用積木堆起盡可能高的塔。他堆積木的過程中,只需要同時滿足如下三個規則 1 積木必須堆放在同乙個列中,乙個搭在...

中石油訓練賽十 天平

莫名感覺這道題和找零錢是一樣一樣的,便於記憶情況下,還是給寫一下比較好 簡單思路 貪心,要使右盤所放砝碼最少,則要從較大質量的砝碼開始放起。小 t 到 cz 中學上的第一堂課是物理課,第一堂課 l 老師就把大家帶到創新實驗室去 做實驗了,實驗的內容是天平稱物。眾所周知天平是物理實驗室中的一種衡量物體...