こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
最安値を達成するには 3 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】
実装
以下のように実装しました。
package main
import "fmt"
func main(){
var n, x, a, y, b int
fmt.Scan(&n, &x, &a, &y, &b)
dp := make([]int, n + y)
min := func(a, b int) int {
if a < b {
return a
} else {
return b
}
}
for i := 1; i < n + y; i++ {
dp[i] = 10000000
}
for i := 1; i < n + y; i++ {
if i >= x {
dp[i] = min(dp[i], dp[i - x] + a)
}
if i >= y {
dp[i] = min(dp[i], dp[i - y] + b)
}
}
for i := n + y - 2; i > 0; i-- {
dp[i] = min(dp[i], dp[i + 1])
}
fmt.Println(dp[n])
}
正直よくわかってないんですよね。よくない。繰り返しやるしかない。
では今回はこれで👍