AT_nupc2024_b.おつり

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

NUPC 国目前流通有 NN 种硬币,面值分别为 C1,C2,…,CNC_1, C_2, \dots, C_N 日元。

你分别拥有 A1,A2,…,ANA_1, A_2, \dots, A_N 枚这些硬币。

你想要购买一件价格为 MM 日元的商品。商家对每种硬币都各自拥有 1010010^{100} 枚,如果你支付的金额超过 MM,找零会以使找回的硬币总数最少的方式进行支付。(在本题的条件下,这种找零方式是唯一的。)

此外,支付时不得出现你支付出去的硬币作为找零返还的情况。 例如,若你用一枚 1010 日元硬币支付,找零中不能包含 1010 日元硬币。

你希望购买商品后,自己手里剩余的硬币数尽可能少。请输出一种剩余硬币数最少的支付方案。

输入格式

输入通过标准输入按以下格式给出。

NN MM C1C_1 C2C_2 …\dots CNC_N A1A_1 A2A_2 …\dots ANA_N

输出格式

请输出一种支付方案。

m1m_1 m2m_2 …\dots mNm_N

这里,m1,m2,…,mNm_1, m_2, \dots, m_N 分别表示每种硬币支付的枚数,需满足 0≤mi≤Ai0\le m_i\le A_i (1≤i≤N1\le i\le N) 且 ∑i=1NCi⋅mi≥M\sum_{i=1}^N C_i \cdot m_i \geq M。

输入输出样例

  • 输入#1

    6 100
    1 5 10 50 100 500
    1 1 1 1 1 1

    输出#1

    0 0 0 0 1 0
  • 输入#2

    6 100
    1 5 10 50 100 500
    2 2 2 2 2 2

    输出#2

    0 2 0 2 0 0
  • 输入#3

    4 1000
    1 100 500 1000
    2000 0 0 0

    输出#3

    2000 0 0 0

说明/提示

样例解释 1

如果用 11 枚 100100 日元硬币支付,最终你手里还剩 55 枚硬币,无法使用更少的硬币支付。因此,这是一个满足条件的支付方案例。

样例解释 2

如果用 22 枚 5050 日元、22 枚 55 日元硬币支付,最终你手里还剩 99 枚硬币,无法使用更少的硬币支付。因此,这是一个满足条件的支付方案例。

另外,以下支付方式虽然也能使剩余硬币数量为 99 枚,但由于其中 1010 日元硬币既被用于支付也被用于找零,不满足题目的支付条件:

0 2 1 2 0 0

数据范围

  • 所有输入均为整数
  • 1≤N≤301\leq N\leq 30
  • 1=C1<C2<⋯<CN≤1091=C_1<C_2<\cdots<C_N\leq 10^9
  • Ci+1C_{i+1} 是 CiC_{i} 的倍数(1≤i≤N−11\leq i\leq N-1)
  • 0≤Ai≤1090\leq A_i\leq 10^9 (1≤i≤N1\leq i\leq N)
  • 1≤M≤∑i=1NCi⋅Ai1\leq M\leq \sum_{i=1}^N C_i \cdot A_i

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页