5.2刷題

P1064 [NOIP 2006 提高組] 金明的預算方案

背包+附屬品DP

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, m, v, p, q;
struct node{int id, v, s, f;
}a[100];
int b[32010], dp[32010];
bool cmp(node a, node b){if(a.id == b.id)return a.f < b.f;return a.id < b.id;
}
signed main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n >> m;for(int i = 1; i <= m; i++){cin >> v >> p >> q;if(q == 0)a[i].id = i, a[i].v = v, a[i].f = 0, a[i].s = v * p;else a[i].id = q, a[i].v = v, a[i].f = ++b[q], a[i].s = v * p;}sort(a + 1, a + m + 1, cmp);for(int i = 1; i <= m; i++){if(a[i].f)continue;for(int j = n; j >= a[i].v; j--){dp[j] = max(dp[j], dp[j - a[i].v] + a[i].s);if(a[i].id == a[i + 1].id && j >= a[i].v + a[i + 1].v){dp[j] = max(dp[j], dp[j - a[i].v - a[i + 1].v] + a[i].s + a[i + 1].s);}if(a[i].id == a[i + 2].id && j >= a[i].v + a[i + 2].v){dp[j] = max(dp[j], dp[j - a[i].v - a[i + 2].v] + a[i].s + a[i + 2].s);}if(a[i].id == a[i + 2].id && j >= a[i].v + a[i + 1].v + a[i + 2].v){dp[j] = max(dp[j], dp[j - a[i].v - a[i + 1].v - a[i + 2].v] + a[i].s + a[i + 1].s + a[i + 2].s);}}}cout << dp[n] << endl;return 0;
}

P1156 垃圾陷阱

做法一:DFS

#include<bits/stdc++.h>
using namespace std;
#define int long long
int d, n;
struct node{int t, f, h;
}a[105];
bool cmp(node a, node b){return a.t < b.t;
}
int ans1 = 1e9, ans2;
void dfs(int t, int h, int pos){if(h >= d){ans1 = min(ans1, a[pos - 1].t);return;}if(a[pos].t > t || pos > n){ans2 = max(ans2, t);return;}dfs(t, h + a[pos].h, pos + 1);dfs(t + a[pos].f, h, pos + 1);
}
signed main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> d >> n;for(int i = 1; i <= n; i++)cin >> a[i].t >> a[i].f >> a[i].h;sort(a + 1, a + n + 1, cmp);dfs(10, 0, 1);if(ans1 == 1e9)cout << ans2 << endl;else cout << ans1 << endl;return 0;
}

記憶化改進

#include<bits/stdc++.h>
using namespace std;
#define int long long
int d, n;
struct node{int t, f, h;
}a[105];
bool cmp(node a, node b){return a.t < b.t;
}
int ans1 = 1e9, ans2;
bool dp[1010][110][110];
void dfs(int t, int h, int pos){if(h >= d){ans1 = min(ans1, a[pos - 1].t);return;}if(a[pos].t > t || pos > n){ans2 = max(ans2, t);return;}if(dp[t][h][pos])return;dp[t][h][pos] = 1;dfs(t, h + a[pos].h, pos + 1);dfs(t + a[pos].f, h, pos + 1);
}
signed main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> d >> n;for(int i = 1; i <= n; i++)cin >> a[i].t >> a[i].f >> a[i].h;sort(a + 1, a + n + 1, cmp);dfs(10, 0, 1);if(ans1 == 1e9)cout << ans2 << endl;else cout << ans1 << endl;return 0;
}

mp改進

#include<bits/stdc++.h>
using namespace std;
#define int long long
int d, n;
struct node{int t, f, h;
}a[105];
bool cmp(node a, node b){return a.t < b.t;
}
int ans1 = 1e9, ans2;
map<int, map<int, map<int, bool> > >dp;
void dfs(int t, int h, int pos){if(h >= d){ans1 = min(ans1, a[pos - 1].t);return;}if(a[pos].t > t || pos > n){ans2 = max(ans2, t);return;}if(dp[t][h][pos])return;dp[t][h][pos] = 1;dfs(t, h + a[pos].h, pos + 1);dfs(t + a[pos].f, h, pos + 1);
}
signed main(){ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> d >> n;for(int i = 1; i <= n; i++)cin >> a[i].t >> a[i].f >> a[i].h;sort(a + 1, a + n + 1, cmp);dfs(10, 0, 1);if(ans1 == 1e9)cout << ans2 << endl;else cout << ans1 << endl;return 0;
}

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

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

相關文章

輕舟系列FPGA加速卡:大模型分布式訓練中的高效協同者

在超大規模模型&#xff08;如千億級參數&#xff09;的分布式訓練中&#xff0c;計算、存儲與通信的協同優化是突破性能瓶頸的關鍵。綠算技術公司的輕舟系列FPGA加速卡憑借其低延遲、高能效和可編程特性&#xff0c;能夠成為分布式訓練架構中的異構加速節點。其在訓練集群中的…

序列數據(Sequential Data)??:按順序排列的動態信息載體

核心定義?? 序列數據是??按特定順序排列??的數據集合&#xff0c;其中元素的??位置或時間順序??蘊含關鍵信息。例如&#xff1a; ??時間序列??&#xff1a;股票價格、氣溫變化&#xff08;按時間戳排列&#xff09;。??文本??&#xff1a;句子中的詞語序列…

【單片機數碼管實現第一位開始走0~9,1s后第二位再開始亮】2022-5-2

緣由怎么讓單片機數碼管實現第一位開始走0~9,1s后第二位再開始亮? - 24小時必答區 #include "REG52.h" void sm7447(unsigned char mz, unsigned char w) {unsigned char Xd0;P2255;P2mz;P3w;while(Xd); } void main() {unsigned char jz0,zhi128;unsigned int Ys4…

InnoDB索引的原理

在鵝廠后端開發一面&#xff0c;我遇到了如題這樣一個比較寬泛的問題&#xff0c;當時可能只是背了相關概念&#xff0c;對于索引的了解不是很深刻。 最近&#xff0c;我花了很大的功夫去深入了解MySQL的索引。 下面是我的一些思考&#xff1a; 索引&#xff0c;對于InnoDB來說…

FormCalc 支持的編程語言和軟件

FormCalc 是一種專為 PDF 表單計算設計的腳本語言&#xff0c;主要應用于 Adobe 生態及 SAP 相關工具。以下是支持 FormCalc 的主要軟件和平臺&#xff1a; 1. Adobe LiveCycle Designer&#xff08;最佳支持&#xff09; 原生支持&#xff1a;FormCalc 是 LiveCycle Designe…

unity 為什么不切片 Sprite.rect 與Sprite.textureRect的值還不一樣

一。測試代碼&#xff1a; 二。發現Debug不一樣的原因 與解決方案&#xff1a; 下圖右邊所示&#xff1a; 網格類型默認為緊密 在 Unity 中&#xff0c;紋理導入時可能存在自動的偏移和裁剪設置。即便你沒有手動切片&#xff0c;Unity 可能會根據紋理的導入設置&#xff0c;對…

超預期!淘寶閃購提前開放全國全量,聯合餓了么扭轉外賣戰局

餓了么由守轉攻。 作者|景行 編輯|楊舟 淘寶餓了么&#xff0c;終于落子&#xff0c;“淘寶閃購”&#xff0c;橫空出世&#xff0c;僅僅2天&#xff0c;業務加速。 4月30日上午&#xff0c;當外賣戰場陷入沉寂時&#xff0c;淘寶宣布將即時零售業務“小時達”升級為“淘寶閃…

minio相關面試問題和參考答案

可以考慮以下幾個方面&#xff1a; MinIO概述與特性MinIO與其他對象存儲的比較MinIO的使用場景MinIO的API與SDKMinIO的安全性與權限管理MinIO的性能優化 以下是一些相關的面試技術問題及其參考回答&#xff1a;具體如下&#xff1a; MinIO的主要特性包括&#xff1a; 高性能&am…

加載ko驅動模塊:顯示Arm版本問題解決!

1、問題 驅動模塊加載&#xff0c;使用命令&#xff1a;modprobe chrdevbase.ko 時出現&#xff1a; hrdevbase: version magic 4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ’ should be 4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8 ’ ———————…

【論文閱讀一】掌握高效閱讀法,開啟學術研究新旅程:S. Keshav教授論文閱讀的三遍法

文章目錄 一、三遍閱讀法1. 初讀&#xff1a;10分鐘&#xff1a;宏觀把握&#xff0c;快速篩選2. 第二遍&#xff1a;1個小時&#xff1a;更仔細的閱讀&#xff0c;了解文中論點3. 第三遍&#xff1a;深入理解&#xff0c;注重細節&#xff0c;挑戰假設 二、運用三遍閱讀法進行…

3D Gaussian Splatting部分原理介紹和CUDA代碼解讀

本系列旨在幫助無CUDA代碼經驗的讀者、以及3DGS的初學者理解代碼邏輯。 3D GS論文原文鏈接&#xff1a;https://arxiv.org/abs/2308.04079 論文筆記鏈接&#xff1a;【論文筆記】3D Gaussian Splatting for Real-Time Radiance Field Rendering 【論文筆記】A Survey on 3D Ga…

【數據結構】--- 雙向鏈表的增刪查改

前言&#xff1a; 經過了幾個月的漫長歲月&#xff0c;回頭時年邁的小編發現&#xff0c;數據結構的內容還沒有寫博客&#xff0c;于是小編趕緊停下手頭的活動&#xff0c;補上博客以洗清身上的罪孽 目錄 前言&#xff1a; 概念&#xff1a; 雙鏈表的初始化 雙鏈表的判空 雙鏈表…

Ubuntu如何查看硬盤的使用情況,以及掛載情況。

在Ubuntu中查看硬盤使用情況及掛載情況&#xff0c;可通過以下命令實現&#xff1a; 一、查看硬盤使用情況 df -h 顯示所有掛載文件系統的磁盤空間使用情況&#xff08;含總容量、已用空間、可用空間等&#xff09;&#xff0c;輸出結果以易讀格式&#xff08;如GB、MB&#x…

Github 2025-05-02Java開源項目日報 Top9

根據Github Trendings的統計,今日(2025-05-02統計)共有9個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Java項目9Android開源輕量級流媒體前端 創建周期:3158 天開發語言:Java協議類型:GNU General Public License v3.0Star數量:28641 個Fork數量…

linux學習——數據庫API創建

一.API操作 1.int sqlite3_open(char *filename,sqlite3 **db) 功能&#xff1a;打開sqlite數據庫 參數&#xff1a; filename:數據庫文件路徑 db:指向sqlite句柄的指針 &#xff08;splite3* db;&#xff09; 返回值…

Baklib內容中臺落地實戰指南

內容中臺實施最佳路徑 在構建企業級內容中臺的實踐中&#xff0c;架構設計與流程優化構成核心支撐框架。通過四庫體系&#xff08;知識庫、資源庫、模板庫、場景庫&#xff09;的有機組合&#xff0c;企業可實現從知識沉淀到場景化應用的閉環管理。智能檢索技術結合語義分析引…

【重走C++學習之路】26、類型轉換

目錄 一、C語言中的類型轉換 二、C中的四個類型轉換 2.1 static_cast 2.2 dynamic_cast 2.3 const_cast 2.4 reinterpret_cast 2.5 總結 結語 一、C語言中的類型轉換 在C語言中&#xff0c;如果賦值運算符左右兩側類型不同&#xff0c;或者形參與實參類型不匹配&a…

kotlin 過濾 filter 函數的作用和使用場景

1. filter 函數的作用 filter 是 Kotlin 集合操作中的一個高階函數&#xff0c;用于根據指定條件從集合中篩選出符合條件的元素。 作用&#xff1a;遍歷集合中的每個元素&#xff0c;并通過給定的 lambda 表達式判斷是否保留該元素。返回值&#xff1a;一個新的集合&#xff…

安卓程序打包與發布

一 配置編譯信息 二 創建密鑰

LeetCode算法題 (移除鏈表元素)Day15!!!C/C++

https://leetcode.cn/problems/remove-linked-list-elements/description/ 一、題目分析 給你一個鏈表的頭節點 head 和一個整數 val &#xff0c;請你刪除鏈表中所有滿足 Node.val val 的節點&#xff0c;并返回 新的頭節點 。 今天的題目非常好理解&#xff0c;也就是要刪除…