P1874 快速求和

題目

P1874 快速求和

算法標簽: 動態規劃, 線性 d p dp dp

思路

求的是最少組成 n n n的加法次數, 對于當前數字序列可以設計狀態表示 f [ i ] [ j ] f[i][j] f[i][j]表示考慮前 i i i個字符, 并且和是 j j j的所有方案中加法次數最小的方案, 那么就要考慮狀態轉移, 按照最后一步的思想, 可以將集合劃分為最后一個數字的長度, 也就是最后一個數字是什么, 算法時間復雜度 O ( n × l e n ) O(n \times len) O(n×len)

代碼

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;typedef long long LL;
const LL INF = 5e18, N = 55, M = 1e5 + 40;string s;
LL w[N], nums[N][N], cnt;
LL sum, n, f[N][M];
bool vis;int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> s >> sum;n = s.size();//去除前導0for (int i = 0; s[i]; ++i) {if (s[i] != '0') vis = true;if (vis) w[++cnt] = s[i] - '0';}if (cnt == 0) w[++cnt] = 0;//預處理兩個位置直接組成的數字大小for (int i = 1; i <= cnt; ++i) {nums[i][i] = w[i];for (int j = i; j - i <= 11 && j <= cnt; ++j) {nums[i][j] = nums[i][j - 1] * 10 + w[j];}}//初始化dpfor (int i = 0; i <= cnt + 1; ++i) {for (int j = 0; j <= sum + 1; ++j) f[i][j] = INF;}f[0][0] = 0;for (int i = 1; i <= cnt; ++i) {//枚舉最后一個數字的大小for (int k = 1; k <= 11; ++k) {if (i >= k) {LL curr = nums[i - k + 1][i];for (LL j = curr; j <= sum; ++j) {f[i][j] = min(f[i][j], f[i - k][j - curr] + 1);}}}}int ans;if (f[cnt][sum] > cnt) ans = -1;else ans = f[cnt][sum] - 1;cout << ans << "\n";return 0;
}

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

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

相關文章

知名人工智能AI培訓公開課內訓課程培訓師培訓老師專家咨詢顧問唐興通AI在金融零售制造業醫藥服務業創新實踐應用

AI賦能未來工作&#xff1a;引爆效率與價值創造的實戰營 AI驅動的工作革命&#xff1a;從效率提升到價值共創 培訓時長&#xff1a; 本課程不僅是AI工具的操作指南&#xff0c;更是面向未來的工作方式升級羅盤。旨在幫助學員系統掌握AI&#xff08;特別是生成式AI/大語言模型…

Linux 內核參數

文章目錄 什么是內核參數參數種類配置方式1. 編譯內核時配置2. 內核啟動時配置3. 內核運行時配置4. 加載內核模塊時配置總結 什么是內核參數 內核參數是 Linux 系統中用于控制和調整內核行為的可配置選項。這些參數影響系統的性能、安全性和各種功能特性。 參數種類 大部分參…

pythonocc 拉伸特征

micromamba install -c conda-forge pythonocc-core opencascade.js安裝不起來&#xff0c;ai用pythonocc練個手 拉伸線框 線成面 from OCC.Core.gp import gp_Pnt, gp_Dir, gp_Vec from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeWire f…

Vue.js 頁面切換空白與刷新 404 問題深度解析

在使用 Vue.js 開發單頁應用 (SPA) 的過程中&#xff0c;開發者經常會遇到兩個常見問題&#xff1a;頁面切換時出現短暫的空白屏幕&#xff0c;以及刷新頁面時返回 404 錯誤。這兩個問題不僅影響用戶體驗&#xff0c;還可能阻礙項目的正常上線。本文將深入探討這兩個問題的成因…

Go 語言 slice(切片) 的使用

序言 在許多開發語言中&#xff0c;動態數組是必不可少的一個組成部分。在實際的開發中很少會使用到數組&#xff0c;因為對于數組的大小大多數情況下我們是不能事先就確定好的&#xff0c;所以他不夠靈活。動態數組通過提供自動擴容的機制&#xff0c;極大地提升了開發效率。這…

Qt5.14.2 鏈接 MySQL 8.4 遇到的問題

問題一: "Plugin caching_sha2_password could not be loaded: 找不到指定的模塊。 Library path is caching_sha2_password.dll QMYSQL: Unable to connect" 解決方法: alter user root@localhost identified with mysql_native_password by root;問題二: ERR…

Docker 部署 - Crawl4AI 文檔 (v0.5.x)

Docker 部署 - Crawl4AI 文檔 (v0.5.x) 快速入門 &#x1f680; 拉取并運行基礎版本&#xff1a; # 不帶安全性的基本運行 docker pull unclecode/crawl4ai:basic docker run -p 11235:11235 unclecode/crawl4ai:basic# 帶有 API 安全性啟用的運行 docker run -p 11235:1123…

開發工具分享: Web前端編碼常用的在線編譯器

1.OneCompiler 工具網址&#xff1a;https://onecompiler.com/ OneCompiler支持60多種編程語言&#xff0c;在全球有超過1280萬用戶&#xff0c;讓開發者可以輕易實現代碼的編寫、運行和共享。 OneCompiler的線上調試功能完全免費&#xff0c;對編程語言的覆蓋也很全&#x…

Docker-配置私有倉庫(Harbor)

配置私有倉庫&#xff08;Harbor&#xff09; 一、環境準備安裝 Docker 三、安裝docker-compose四、準備Harbor五、配置證書六、部署配置Harbor七、配置啟動服務八、定制本地倉庫九、測試本地倉庫 Harbor(港灣)&#xff0c;是一個用于 存儲 和 分發 Docker 鏡像的企業級 Regi…

關于高并發GIS數據處理的一點經驗分享

1、背景介紹 筆者過去幾年在參與某個大型央企的項目開發過程中,遇到了十分棘手的難題。其與我們平常接觸的項目性質完全不同。在一般的項目中,客戶一般只要求我們能夠通過桌面軟件對原始數據進行加工處理,將各類地理信息數據加工處理成地圖/場景和工作空間,然后再將工作空…

使用 DMM 測試 TDR

TDR&#xff08;時域反射計&#xff09;可能是實驗室中上升時間最快的儀器&#xff0c;但您可以使用直流歐姆表測試其準確性。 TDR 測量什么 在所有高速通道中&#xff0c;反射都很糟糕。我們嘗試設計一個通道來減少反射&#xff0c;這些反射都會導致符號間干擾 &#xff08;…

可視化圖解算法37:序列化二叉樹-II

1. 題目 描述 請實現兩個函數&#xff0c;分別用來序列化和反序列化二叉樹&#xff0c;不對序列化之后的字符串進行約束&#xff0c;但要求能夠根據序列化之后的字符串重新構造出一棵與原二叉樹相同的樹。 二叉樹的序列化(Serialize)是指&#xff1a;把一棵二叉樹按照某種遍…

【Python】Python常用數據類型詳解

Python常用數據類型詳解:增刪改查全掌握 Python作為一門簡潔高效的編程語言,其豐富的數據類型是構建程序的基礎。本文將詳細介紹數字、字符串、列表、元組、字典、集合這六種核心數據類型的特點及增刪改查操作,并附代碼示例,助你全面掌握數據操作技巧。 一、數字(Number)…

模板引用、組件基礎

#### 組件基礎 1. 定義和使用簡單組件 - ![alt text](./img/image-2.png) vue <!-- 在App.vue里 --> <script setup>import HelloWorld from ./components/HelloWorld.vue </script> <template><HelloWorld></HelloWorld></temp…

深入探索 RKNN 模型轉換之旅

在人工智能蓬勃發展的當下&#xff0c;邊緣計算領域的應用愈發廣泛。瑞芯微的 RKNN 技術在這一領域大放異彩&#xff0c;它能讓深度學習模型在其芯片平臺上高效運行。而在整個應用流程中&#xff0c;模型轉換是極為關鍵的一環&#xff0c;今天就讓我們一同深入這個神奇的 RKNN …

iframe嵌套網站的安全機制實現

背景&#xff1a; 公司內部有一套系統A部署在內網&#xff0c;這套系統嵌套了B網站&#xff08;也是內網&#xff09;&#xff0c;只有內網才能訪問。現在需要將這個A系統暴露到公網。B系統的安全策略比較低&#xff0c;想快速上線并提高B系統的安全性。 通過 Nginx 代理層 設置…

青少年編程與數學 02-019 Rust 編程基礎 08課題、字面量、運算符和表達式

青少年編程與數學 02-019 Rust 編程基礎 08課題、字面量、運算符和表達式 一、字面量1. 字面量的分類1.1 整數字面量1.2 浮點數字面量1.3 字符字面量1.4 字符串字面量1.5 布爾字面量1.6 字節數組字面量 2. 字面量的類型推斷3. 字面量的用途4. 字面量的限制字面量總結 二、運算符…

危化品安全員職業發展方向的優劣對比

以下是危化品安全員不同職業發展方向的優劣對比&#xff1a; 縱向晉升 優勢 職業路徑清晰&#xff1a;從危化品安全員逐步晉升為安全主管、安全經理、安全總監等管理職位&#xff0c;層級明確&#xff0c;有較為清晰的上升通道。管理能力提升&#xff1a;隨著職位上升&#x…

談AI/OT 的融合

過去的十幾年間&#xff0c;工業界討論最多的話題之一就是IT/OT 融合&#xff0c;現在&#xff0c;我們不僅要實現IT/OT 的融合&#xff0c;更要面向AI/OT 的融合。看起來不太靠譜&#xff0c;卻留給我們無限的想象空間。OT 領域的專家們不要再當“九斤老太”&#xff0c;指責這…

計算機網絡核心技術解析:從基礎架構到應用實踐

計算機網絡作為現代信息社會的基石&#xff0c;承載著全球數據交換與資源共享的核心功能。本文將從網絡基礎架構、核心協議、分層模型到實際應用場景&#xff0c;全面解析計算機網絡的核心技術&#xff0c;并結合行業最新趨勢&#xff0c;為讀者構建系統的知識體系。 一、計算機…