洛谷 P2842 紙幣問題 1 -普及-

題目描述

某國有 nnn 種紙幣,每種紙幣面額為 aia_iai? 并且有無限張,現在要湊出 www 的金額,試問最少用多少張紙幣可以湊出來?

輸入格式

第一行兩個整數 n,wn,wn,w,分別表示紙幣的種數和要湊出的金額。
第二行一行 nnn 個以空格隔開的整數 a1,a2,a3,…ana_1, a_2, a_3, \dots a_na1?,a2?,a3?,an? 依次表示這 nnn 種紙幣的面額。

輸出格式

一行一個整數,表示最少使用的紙幣張數。

輸入輸出樣例 #1

輸入 #1

6 15
1 5 10 20 50 100

輸出 #1

2

輸入輸出樣例 #2

輸入 #2

3 15
1 5 11

輸出 #2

3

說明/提示

對于 40%40\%40% 的數據,滿足 n≤10n\le 10n10w≤100w\le 100w100
對于 100%100\%100% 的數據,滿足 1≤n≤1031\le n\le 10^31n1031≤ai,w≤1041\le a_i , w\le 10^41ai?,w104

solution

動態規劃:

  • 1 定義公式:
    • 設 f[i][j]: 如果只用前 i 種紙幣,最少需要多少張才能拼成 j 元。
  • 2 遞推關系:
    • f[i][j] = min(f[i][j], f[i][j - a[i]] + 1, f[i-1][j])
    • 因為 i 只影響 i + 1,所以只需要保存一個,可以省略一個維度
      遞推公式 f[j] = min(f[j], f[j - a[i]] + 1)
  • 3 結果
    f[w]

代碼

#include<iostream>
#include "unordered_map"
#include "unordered_set"
#include "stack"
#include "queue"
#include "cstring"
#include "algorithm"using namespace std;
const int N = 1e3 + 5, INF = 1e4, M = 1e4 + 5;int a[N], n, w, f[M];int main() {cin >> n >> w;for (int i = 0; i < n; i++) cin >> a[i];for (int j = 1; j <= w; j++) {f[j] = INF;for (int i = 0; i < n; i++) {if (j >= a[i]) {f[j] = min(f[j], f[j - a[i]] + 1);}}}cout << f[w];return 0;
}

結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93457.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第十四節:物理引擎集成:Cannon.js入門

第十四節&#xff1a;物理引擎集成&#xff1a;Cannon.js入門 引言 物理引擎為3D世界注入真實感&#xff0c;讓物體遵循重力、碰撞和動量等物理規律。Cannon.js是Three.js生態中最強大的物理引擎之一&#xff0c;本文將深入解析其核心機制&#xff0c;并通過Vue3實現物理沙盒系…

二十四、Mybatis-基礎操作-刪除(預編譯SQL)

mybatis環境準備概述與注意事項&#xff08;springboot項目引入三項必要的起步依賴&#xff09;項目目錄結構mybatis基礎操作-刪除對應EmpMapper&#xff08;接口&#xff09;代碼 package com.itheima.mapper;import org.apache.ibatis.annotations.*;Mapper public interface…

JavaScript 核心基礎:類型檢測、DOM 操作與事件處理

JavaScript 作為松散類型語言&#xff0c;掌握類型檢測規則、DOM 元素獲取方式及事件處理邏輯&#xff0c;是寫出健壯代碼的基礎。本文系統梳理 JS 高頻基礎知識點&#xff0c;結合實戰場景解析原理與用法&#xff0c;幫你建立清晰的知識框架。 一、JS 數據類型與類型檢測&…

軟件開發過程中的維護活動

軟件開發過程中的維護活動軟件維護是軟件生命周期中持續時間最長、成本最高的階段&#xff0c;它并非簡單的“修理”&#xff0c;而是一系列旨在延長軟件生命周期、保持其價值和適應性的工程化活動。研究表明&#xff0c;軟件維護成本可占總成本的60%以上。理解并有效管理維護活…

STC8單片機驅動I2C屏幕:實現時間、日期與溫濕度顯示

STC8 單片機驅動 I2C 屏幕&#xff1a;實現時間、日期與溫濕度顯示 在單片機項目中&#xff0c;“數據可視化” 是核心需求之一 —— 將時間、溫濕度等關鍵信息實時顯示在屏幕上&#xff0c;能讓項目更具實用性。本文以STC8 系列單片機為核心&#xff0c;搭配 I2C 接口的 OLED…

基于SpringBoot+Vue的智能消費記賬系統(AI問答、WebSocket即時通訊、Echarts圖形化分析)

&#x1f388;系統亮點&#xff1a;AI問答、WebSocket即時通訊、Echarts圖形化分析&#xff1b;一.系統開發工具與環境搭建1.系統設計開發工具后端使用Java編程語言的Spring boot框架 項目架構&#xff1a;B/S架構 運行環境&#xff1a;win10/win11、jdk17前端&#xff1a; 技術…

[論文筆記] WiscKey: Separating Keys from Values in SSD-Conscious Storage

閱讀 WiscKey 論文時隨手記錄一些筆記。 這篇論文的核心思想理解起來還是很簡單的&#xff0c;但是具體涉及到實現還有一些想不明白的地方&#xff0c;后來看到 TiKV 的 Titan 實現也很有趣&#xff0c;索性把這些問題都記錄下來并拋出來。 本文中和論文相關的內容&#xff0…

week1-[循環嵌套]畫正方形

week1-[循環嵌套]畫正方形 題目描述 輸入一個正整數 nnn&#xff0c;請使用數字 000 到 999 拼成一個這樣的正方形圖案&#xff08;參考樣例輸入輸出&#xff09;&#xff1a;由上至下、由左至右依次由數字 000 到 999 填充。每次使用數字 999 填充后&#xff0c;將從頭使用數字…

在 Vue2 中使用 pdf.js + pdf-lib 實現 PDF 預覽、手寫簽名、文字批注與高保真導出

本文演示如何在前端&#xff08;Vue.js&#xff09;中結合 pdf.js、pdf-lib 與 Canvas 技術實現 PDF 預覽、圖片簽名、手寫批注、文字標注&#xff0c;并導出高保真 PDF。 先上demo截圖&#xff0c;后續會附上代碼倉庫地址&#xff08;目前還有部分問題暫未進行優化&#xff0…

tomcat 定時重啟

tomcat 定時重啟 定時重啟的目的是:修復內存泄漏等問題,tomcat 長時間未重啟,導致頁面卡頓,卡死,無法訪問,影響用戶訪問 1.編寫腳本 su - tomcat [tomcat@u1abomap02 ~]$ ls restart_tomcat_gosi.sh tomcat_gosi.log vi restart_tomcat_gosi.sh #!/bin/bash# 定義日志目…

WinForm 簡單用戶登錄記錄器實現教程

目錄 功能概述 實現思路 一、程序入口&#xff08;Program.cs&#xff09; 二、登錄用戶控件&#xff08;Login.cs&#xff09; 2.1 控件初始化與密碼顯示邏輯 2.2 登錄控件設計器&#xff08;Login.Designer.cs&#xff09; 三、主窗體&#xff08;Form1.cs&#xff09…

docker 安裝 使用

Docker安裝 一鍵安裝命令 sudo curl -fsSL https://get.docker.com| bash -s docker --mirror Aliyun啟動docker sudo service docker startpull鏡像加速配置 sudo vi /etc/docker/daemon.json輸入下列內容&#xff0c;最后按ESC&#xff0c;輸入 :wq! 保存退出。 {"regis…

無人機探測器技術解析

一、工作模式 無人機探測器通過多模式協同實現全流程防御閉環&#xff1a; 1. 主動掃描模式 雷達主動探測&#xff1a;發射電磁波&#xff08;如Ka/Ku波段&#xff09;&#xff0c;通過回波時差與多普勒頻移計算目標距離、速度及航向&#xff0c;適用于廣域掃描&#xff08;…

Linux學習-軟件編程(進程與線程)

進程回收wait原型&#xff1a;pid_t wait(int *wstatus); 功能&#xff1a;回收子進程空間 參數&#xff1a;wstatus&#xff1a;存放子進程結束狀態空間的首地址 返回值&#xff1a;成功返回回收到的子進程的PID失敗返回-1WIFEXITED(wstatus)&#xff1a;測試進程是否正常結束…

大模型微調分布式訓練-大模型壓縮訓練(知識蒸餾)-大模型推理部署(分布式推理與量化部署)-大模型評估測試(OpenCompass)

大模型微調分布式訓練 LLama Factory與Xtuner分布式微調大模型 大模型分布式微調訓練的基本概念 為什么需要分布式訓練&#xff1f; 模型規模爆炸&#xff1a;現代大模型&#xff08;如GPT-3、LLaMA等&#xff09;參數量達千億級別&#xff0c;單卡GPU無法存儲完整模型。 …

物聯網、大數據與云計算持續發展,樓宇自控系統應用日益廣泛

在深圳某智慧園區的控制中心&#xff0c;管理人員通過云端平臺實時監控著5公里外園區內每臺空調的運行參數、每盞路燈的開關狀態和每個區域的能耗數據。當系統檢測到某棟樓宇的電梯運行振動異常時&#xff0c;大數據算法自動預判可能的故障點并推送維修建議&#xff1b;物聯網傳…

在實驗室連接地下車庫工控機及其數據采集設備

在實驗室連接地下車庫工控機及其數據采集設備 我們小組為項目的數據采集組&#xff0c;目前在車頂集成了一個工控機、兩個激光雷達、兩個攝像頭、一個戶外電源 由于地下車庫蚊子太多了&#xff0c;我們可受不了這個苦&#xff0c;所以想坐在實驗室吹著空調就能連接工控機來修改…

icmpsh、PingTunnel--安裝、使用

用途限制聲明&#xff0c;本文僅用于網絡安全技術研究、教育與知識分享。文中涉及的滲透測試方法與工具&#xff0c;嚴禁用于未經授權的網絡攻擊、數據竊取或任何違法活動。任何因不當使用本文內容導致的法律后果&#xff0c;作者及發布平臺不承擔任何責任。滲透測試涉及復雜技…

系統思考:情緒內耗與思維模式

我們正在努力解決的問題&#xff0c;很多時候&#xff0c;根源就在我們自己。 在日常的工作和生活中&#xff0c;我們常常感到焦慮、內耗和失控。這些情緒和狀態&#xff0c;似乎總是在不斷循環。但如果停下來仔細思考&#xff0c;會發現&#xff0c;問題的背后&#xff0c;并不…

詳解grafana k6 中stage的核心概念與作用

在Grafana k6中&#xff0c;??Stage&#xff08;階段&#xff09;?? 是負載測試腳本的核心配置概念&#xff0c;用于動態控制虛擬用戶&#xff08;VUs&#xff09;的數量隨時間的變化。通過定義多個階段&#xff0c;用戶可以模擬真實場景中的流量波動&#xff08;如用戶逐步…