NOIP2018D1T2 貨幣系統

2021-09-29 01:23:10 字數 1138 閱讀 7062

題面

這道題我是親自在考場上考過的

先說題解吧

乙個貨幣系統中 x

xx是沒用的,當且僅當他能被系統中別的貨幣表示

我們拿rmb

rmbrm

b來舉個例子

發現所有的錢都能被一分錢表示出來 所以只留乙個一分錢的就好了!

啪咳咳 不鬧了

題面可以簡述為:給你乙個貨幣系統a

aa 讓我們可以給他簡化 使得所有可以表示的錢還能表示出來。輸出最後簡化剩下的貨幣數量。

我們考慮乙個像揹包的東西,由於我菜逼的揹包技術,我也不知道這是啥揹包…反正我能做出來我樂意

每次操作到a

ia_i

ai​時,考慮能不能被它前面的數字所組成

我們知道如果x

xx能被前i

ii個數組成且組成x

xx的數當中包含a

ia_i

ai​那麼(x−

ai

)(x-a_i)

(x−ai​

)也必然能被前i

ii個數來組成

那麼我們很容易想到定義f(x

)f(x)

f(x)

表示x

xx能否被組成,那麼根據上面的想法顯然有f(x

)=f(

x)∨f

(x−a

i)

f(x) = f(x) \vee f(x-a_i)

f(x)=f

(x)∨

f(x−

ai​)

。直接上**

#include

using

namespace std;

inline

void

read

(int

&x)while

(ch>=

'0'&&ch<=

'9')

x=s*w;

}int t,n,ans,a[

101]

;bool vis[

30000];

intmain()

printf

("%d\n"

,ans);}

}

這幾天要好好複習揹包九講了,別再像去年那樣連這種水分都不要…

2018D1T2 貨幣系統

記貨幣種類為 n 面額陣列為 a 1.n 的貨幣系統為 n,a 貨幣系統 n,a 與 m,b 等價,當且僅當對於 forall x in mathbf n x 要麼均可以被兩個貨幣系統表示,或者不能被任何乙個表示。給定乙個貨幣系統 n,a 求與其等價的貨幣系統 m,b 並使 m 盡可能小。我們把貨幣...

NOIP2018 D1T1 鋪設道路

目錄春春是一名道路工程師,負責鋪設一條長度為 n 的道路。鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區域,一開始,第 i 塊區域下陷的深度為 di。春春每天可以選擇一段連續區間 l,r 填充這段區間中的每塊區域,讓其下陷深度減少 1。在選擇區間時,需要保證,區間內的每塊...

NOIp 2018 D2T1 旅行 未完成

這個題沒有認真讀的話就會寫下以下的dd include define n 5010 using namespace std intn,m intans n actr inthead n ectr bool vis n struct edgeedge n 1 void addedge int from...