首页 > TAG信息列表 > 聘礼
AcWing 903. 昂贵的聘礼
y总做法:建立一个虚拟原点,到所有物品的距离为物品原本价值,物品之间的价值为交易价值,枚举等级范围跑最短路即可 我的做法:以女儿为原点反向建图,物品之间的距离为交易价值,到每个物品的最短路加上这个物品的原本价值即为总花费,取最小 时间复杂度均为O(n^2*logn)(dij堆优化) #incluAcwing 903 昂贵的聘礼
题目描述 思路 首先从题目中抽象出来模型,即求以编号\(1\)的点为终点,求最短距离。终点确定了,但我们并没有确定起点,可以使用一个虚拟源点作为起点,该虚拟源点到其他点的距离为够买该编号商品原本的价钱。这样问题就变成了以虚拟源点\(S\)为起点,以编号\(1\)为终点的最短路。由于等级昂贵的聘礼 POJ - 1062
原题链接 考察:最短路+枚举 错误思路: 枚举所有点作为起点,看所能更新到1点的最短路.返回的dist[1]即为答案. 此思路错在等级处理.如果以pos[1]-m<=k<=pos[1]+m,那么交易途中的最高点和最低点就无法更新.如果在交易途中更新最高点和最低点,那么走错路的时候就不能回溯题解【POJ1062】昂贵的聘礼
题面 比较复杂的最短路模型转换。 我们考虑一种建图方式: 建立一个超级源点 \(S\),它向每一个节点连一条权值为那一个节点物品价值的边,表示直接购买那一个物品; 对于每一个节点,由它每一个可用的替代品向它连一条权值为当前替代品“优惠价格”的边,表示使用那一个替代品来购买当前物品POJ 1062 昂贵的聘礼
一、内容 某天超市搞活动,小明想买一个自己一直想买的电脑,平时需要7000,小明觉得太贵了。但活动当天,超市里的商品可以通过买其他商品获得优惠券。例如买一个键盘然后买电脑只需要5000,如果买一个鼠标买电脑只需要4000。同理,买其他商品也有这样的优惠活动。但商场出于某种目的,POJ 1062昂贵的聘礼
Dij 建立一个虚拟节点以建图. 那么虚拟节点到这些点的值就是初始购买值. 可替代物品直接建图即可,每次取min保证最小花费. 等级浮动只有100,直接从1号点的等级-m枚举,因为要保证能和1号点交换. 参考代码 #include<bits/stdc++.h> #define re register using namespace std; typede