nyoj 三国志 (Dijkstra + 01背包)
发布日期:2021-06-24 06:57:19 浏览次数:4 分类:技术文章

本文共 1722 字,大约阅读时间需要 5 分钟。

。。。 总是没思路  真要命

注意两点之间可能有多条权值不同的路径,不过只要在输入时取最小值就好了。。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #define INF 1e717 #define MAXN 10001018 #define maxn 5019 #define maxm 100020 #define Mod 100000721 using namespace std;22 typedef long long LL;23 24 25 int T;26 int s, n, m;27 int a, b, c;28 int v[110];29 int G[110][110];30 int dist[1000010];31 int vis[110];32 int dp[1000010];33 34 void Dijkstra()35 {36 for (int i = 0; i <= n; ++i)37 dist[i] = G[0][i],vis[i] = 0;38 int pos, min;39 vis[0] = 1;40 dist[0] = 0;41 for (int i = 1; i <= n; ++i) {42 min = INF;43 for (int j = 1; j <= n; ++j) {44 if (!vis[j] && min > dist[j]) {45 pos = j;46 min = dist[j];47 }48 }49 vis[pos] = 1;50 for (int j = 1; j <= n; ++j) {51 if (!vis[j] && dist[j] > dist[pos] + G[pos][j])52 dist[j] = dist[pos] + G[pos][j];53 }54 }55 }56 57 void bag01()58 {59 for (int i = 1; i <= n; ++i)60 for (int j = s; j >= dist[i]; --j)61 dp[j] = max(dp[j - dist[i]] + v[i],dp[j]);62 }63 64 void run()65 {66 scanf("%d%d%d", &s, &n, &m);67 memset(v,0,sizeof(v));68 memset(dp,0,sizeof(dp));69 for (int i = 0; i <= n; ++i)70 for (int j = 0; j <= n; ++j)71 G[i][j] = INF;72 for (int i = 0; i < m; ++i) {73 scanf("%d%d%d", &a, &b, &c);74 if (c < G[a][b])75 G[a][b] = G[b][a] = c;76 }77 for (int i = 1; i <= n; ++i) 78 scanf("%d",&v[i]);79 Dijkstra();80 bag01();81 printf("%d\n",dp[s]);82 }83 int main()84 {85 scanf("%d", &T);86 while (T--)87 run();88 return 0;89 }

 

转载于:https://www.cnblogs.com/usedrosee/p/4337882.html

转载地址:https://blog.csdn.net/weixin_30896763/article/details/98599659 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:html基础——标签
下一篇:Open JDk 源码下载地址

发表评论

最新留言

不错!
[***.144.177.141]2024年04月08日 01时46分25秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Flex&iBatis&Hibernate&Spring—师徒奶茶系统V1总结 2019-04-28
Java 并发包之线程池和原子计数 2019-04-28
JVM StackMapTable 属性的作用及理解 2019-04-28
ASM(三) 利用Method组件动态生成方法的字节码 2019-04-28
ASM(四) 利用Method 组件动态注入方法逻辑 2019-04-28
深度学习与神经网络关系 2019-04-28
反向传播back propagation:神经网络递推与一般表示的向量形式 2019-04-28
深层网络(deepNN)中前向传播fp与后向传播bp的向量化参数 向量化表示 python表示 维数 2019-04-28
convolution 卷积的直观解释 卷积的物理意义 2019-04-28
CNN中的前向传播 及其Python代码实现 2019-04-28
CNN边缘检测示例 直观观察CNN卷积结果 2019-04-28
【笔记】Notes for Deeplearning 深度学习与神经网络的笔记 2019-04-28
解决报错make sure the Graphviz executables are on your systems' PATH 2019-04-28
ubuntu16.04创建快捷方式,以pycharm为例 2019-04-28
常用的linux指令记录 查看tf、cuda、cudnn版本,查看gpu使用情况等 2019-04-28
C++核心准则C.46:默认状态下明确定义单参数构造函数 2019-04-28
C++核心准则C.47:按照成员变量声明的次序定义和初始化数据成员 2019-04-28
C++核心准则C.48:如果构造函数需要用常数初始化成员,使用类内初始化器更合适 2019-04-28
C++核心准则C.49:构造函数中应该做的是初始化而不是赋值 2019-04-28
C++核心准则C.50:如果在构造过程中需要“虚行为”,使用工厂函数 2019-04-28