P7082 [NWRRC 2013] Dwarf Tower 完全背包

古老但是没有通过的洛谷题解,只能放到这里安慰我受伤的心灵了

P7082 [NWRRC 2013] Dwarf Tower

题目描述

小 Vasya 在玩一个新游戏叫做 Dwarf Tower。在这个游戏中有 nnn 个不同的衣物给你的矮人。衣物从 111 到 nnn 进行编号。Vasya 想要获得编号为 111 的衣物。

现在有两种方法获得一件衣物:

  1. 你可以买它,第 iii 件物品花费 cic_ici 元。

  2. 你还可以制作它,这个游戏支持 mmm 种制作方法。要制作一个衣物,你需要花费两个特定的衣物。

算出 Vasya 至少需要多少钱来获得一号衣物。

输入格式

第一行输入两个整数 nnn , mmm (1 \\le n \\le 10000 , 0 \\le m \\le 100000) 代表有 nnn 种衣物和有 mmm 种制作方法。

第二行输入 nnn 个整数,第 iii 个整数代表 cic_ici (0≤ci≤109)(0 \le c_i \le 10^9)(0≤ci≤109) 。

接下来 mmm 行每行有三个整数 ai,xi,yia_i, x_i, y_iai,xi,yi (1≤ai,xi,yi≤n,ai≠xi,xi≠yi,yi≠ai)(1 \le a_i, x_i, y_i \le n , a_i \ne x_i, x_i \ne y_i, y_i \ne a_i)(1≤ai,xi,yi≤n,ai=xi,xi=yi,yi=ai) ,aia_iai 代表 aia_iai 可以被 xix_ixi 和 yiy_iyi 制作。

输出格式

一个整数,代表 Vasya 至少需要多少钱来获得一号衣物。

输入输出样例 #1

输入 #1

复制代码
5 3
5 0 1 2 5
5 2 3
4 2 3
1 4 5

输出 #1

复制代码
2

思路

这道题目我有一个非常奇怪的思路(背包)

我们会发现直接买制作(合成)是两种状态,由于所有衣物都可以拥有无数个 ,所以是个完全背包

令 cic_ici 表示第 iii 件物品的价格 , aia_iai,xix_ixi,yiy_iyi 表示第 aia_iai 件物品可以由第 xix_ixi 和第 yiy_iyi 件物品制作 ,则:cai=min(cai,cxi+cyi)c_{a_i} = min(c_{a_i} , c_{x_i}+c_{y_i})cai=min(cai,cxi+cyi)

代码:

这是我好久前的码风了。。。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n,m,c[100005],a[100005],x[100005],y[100005];
int main(){
	ios::sync_with_stdio(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>c[i];
	for(int i=1;i<=m;i++)cin>>a[i]>>x[i]>>y[i];
	for(int i=1;i<n;i++)
		for(int j=1;j<=m;j++)
			c[a[j]]=min(c[a[j]],c[x[j]]+c[y[j]]);
	cout<<c[1];
	return 0;
}
相关推荐
智者知已应修善业31 分钟前
【洛谷P9975奶牛被病毒传染最少数量推导,导出多样例】2025-2-26
c语言·c++·经验分享·笔记·算法·推荐算法
Trouvaille ~35 分钟前
【Linux】应用层协议设计实战(一):自定义协议与网络计算器
linux·运维·服务器·网络·c++·http·应用层协议
CSCN新手听安41 分钟前
【linux】高级IO,I/O多路转接之poll,接口和原理讲解,poll版本的TCP服务器
linux·运维·服务器·c++·计算机网络·高级io·poll
CSCN新手听安1 小时前
【linux】网络基础(三)TCP服务端网络版本计算器的优化,Json的使用,服务器守护进程化daemon,重谈OSI七层模型
linux·服务器·网络·c++·tcp/ip·json
m0_736919101 小时前
C++中的委托构造函数
开发语言·c++·算法
小小小小王王王1 小时前
洛谷-P1886 【模板】单调队列 / 滑动窗口
c++·算法
历程里程碑1 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun2 小时前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
小龙报2 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
石去皿2 小时前
【嵌入式就业6】计算机组成原理与操作系统核心机制:夯实底层基础
c++·面试·嵌入式