nyoj-203-三国志(dijkstra+01背包)
1 /* 2 Name:NYOJ-203-三国志 3 Copyright: 4 Author: 5 Date: 2018/4/8 21:01:07 6 Description: 7 dijkstra+01背包 8 */ 9 #include <cstring> 10 #include <cstdio> 11 #include<iostream> 12 using namespace std; 13 14 const int MAXN = 1000, INF = 0x3f3f3f3f; 15 int dis[MAXN], g[MAXN][MAXN], N, money[MAXN]; 16 int dp[1000005]; 17 bool v[MAXN]; 18 void dijkstra() { 19 for (int i=0; i<=N; i++) dis[i] = INF; 20 dis[0] = 0; 21 memset(v, 0, sizeof(v)); 22 for (int i=0; i<=N; i++) { 23 int mark = -1, mindis = INF; 24 for (int j=0; j<=N; j++) { 25 if(!v[j] && dis[j]<mindis) { 26 mindis = dis[j]; 27 mark = j; 28 } 29 } 30 v[mark] = 1; 31 for (int j=0; j<=N; ++j) { 32 if (!v[j]) { 33 dis[j] = min(dis[j], dis[mark] + g[mark][j]); 34 } 35 } 36 } 37 } 38 int main() 39 { 40 int t; 41 cin>>t; 42 while (t--) { 43 memset(g, 0x3f, sizeof(g)); 44 memset(dis, 0, sizeof(dis)); 45 memset(money, 0, sizeof(money)); 46 memset(dp, 0x3f, sizeof(dp)); 47 int s, m; 48 cin>>s>>N>>m; 49 for (int i=1; i<=m; i++) { 50 int x, y, cost; 51 cin>>x>>y>>cost; 52 if (cost > g[x][y]) continue; 53 g[x][y] = g[y][x] = cost; 54 } 55 for (int i=1; i<=N; i++) { 56 cin>>money[i]; 57 } 58 dijkstra();//求出最短路径 59 memset(dp,0,sizeof(dp)); 60 for(int i=1; i<=N; ++i) //01背包 61 { 62 for(int j=s; j>=dis[i]; j--) 63 { 64 if(dp[j] < dp[j-dis[i]] + money[i]) 65 dp[j] = dp[j-dis[i]]+money[i]; 66 } 67 } 68 int ans = 0; 69 for(int i=1; i<=s; ++i) 70 ans = ans>dp[i]?ans:dp[i]; 71 cout<<ans<<endl; 72 } 73 return 0; 74 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
2017-04-27 hdu--1316--How Many Fibs?(java大数)
2017-04-27 NYOJ--517--最小公倍数(大数打表)
2017-04-27 NYOJ--513--A+B Problem IV(大数)
2017-04-27 NYOJ--45--棋盘覆盖(大数)
2017-04-27 NYOJ--114--某种序列(大数)
2017-04-27 HAUT--1262--魔法宝石(暴力)
2017-04-27 NYOJ--1276--机器设备(河南省第九届省赛,简单的bfs)