昂贵的聘礼(dijkstra)
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 38549 | Accepted: 11158 |
Description
为了方便起见,我们把所有的物品从1开始进行编号,酋长的允诺也看作一个物品,并且编号总是1。每个物品都有对应的价格P,主人的地位等级L,以及一系列的替代品Ti和该替代品所对应的"优惠"Vi。如果两人地位等级差距超过了M,就不能"间接交易"。你必须根据这些数据来计算出探险家最少需要多少金币才能娶到酋长的女儿。
Input
Output
Sample Input
1 4
10000 3 2
2 8000
3 5000
1000 2 1
4 200
3000 2 1
4 200
50 2 0
Sample Output
5250
Source
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int inf = 0x3f3f3f3f , MAX = ;
int map[MAX][MAX] , p[MAX] , d[MAX] , rank[MAX] ;
bool vis[MAX] ;
int m , n , x ;
int t , v ; void dijkstra (int l , int r)
{
memset (vis , , sizeof(vis)) ;
for (int i = ; i <= n ; i++) {
if (rank[i] < l || rank[i] > r)
vis[i] = ;
d[i] = inf ;
}
d[] = ;
for (int i = ; i <= n ; i++) {
int minc = inf , k ;
for (int j = ; j <= n ; j++) {
if ( !vis[j] && d[j] < minc) {
minc = d[j] ;
k = j ;
}
}
vis[k] = ;
for (int j = ; j <= n ; j++) {
if (!vis[j] && d[j] > d[k] + map[k][j])
d[j] = d[k] + map[k][j] ;
}
}
}
int main ()
{
// freopen ("a.txt" , "r" , stdin) ;
int ans ;
while (~ scanf ("%d%d" , &m , &n)) {
for (int i = ; i <= n ; i++)
for (int j = ; j <= n ; j++)
map[i][j] = inf ;
for (int i = ; i <= n ; i++) {
scanf ("%d%d%d" , &p[i] , &rank[i] , &x) ;
while (x--) {
scanf ("%d%d" , &t , &v) ;
map[i][t] = v ;
}
}
ans = inf ;
for (int i = rank[] - m ; i <= rank[] ; i++) {
dijkstra (i , i + m) ;
for (int j = ; j <= n ; j++)
ans = min (ans , p[j] + d[j]) ;
}
printf ("%d\n" , ans) ;
}
return ;
}
昂贵的聘礼(dijkstra)的更多相关文章
- 昂贵的聘礼 Dijkstra法
poj 1062 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 39437 Accepted: 11432 Descri ...
- POJ - 1062 昂贵的聘礼 Dijkstra
思路:构造最短路模型,抽象出来一个源点,这个源点到第i个点的费用就是price[i],然后就能抽象出图来,终点是1. 任意两个人之间都有等级限制,就枚举所有最低等级限制,然后将不再区间[min_lev ...
- POJ-1062 昂贵的聘礼---Dijkstra+枚举上界
题目链接: https://vjudge.net/problem/POJ-1062 题目大意: 中文题 思路: 1是终点,可以额外添加一个源点0,0到任意一节点的距离就是这个点的money,最终求的是 ...
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
- POJ1062昂贵的聘礼(dijkstra)
昂贵的聘礼 题目大意是说有N个物品,每个物品都有自己的价格,但同时某些物品也可以由其他的(可能不止一个)替代品,这些替代品的价格比较“优惠”,问怎么样选取可以让你的花费最少来购买到物品1 由于有N个物 ...
- POJ1062昂贵的聘礼(经典) 枚举区间 +【Dijkstra】
<题目链接> 昂贵的聘礼 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用1000 ...
- (最短路 dijkstra)昂贵的聘礼 -- poj -- 1062
链接: http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- poj 1062 昂贵的聘礼 (dijkstra最短路)
题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- POJ - 1062 昂贵的聘礼(最短路Dijkstra)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u SubmitStatus Descr ...
随机推荐
- 秒杀9种排序算法(JavaScript版)
一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...
- C#进阶系列——WebApi接口传参不再困惑:传参详解(转载)
原文地址: http://www.cnblogs.com/landeanfen/p/5337072.html 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用 ...
- 利用php实现文件迁移重命名
首先表明,这是一个悲伤的故事. 暑假来临,学校安排我们到某软件外包公司实习,想想不用面试也是蛮方便的,可以借此机会向大牛学习学习,虽然没有工资(据说学校还交了600块的保险),但想想还是蛮期待的,但真 ...
- #Linux学习笔记# 自定义shell终端提示符
我使用的Linux发行版是LinuxMint 17.2 Rafaela,默认情况下Terminal中的shell提示包括了用户名.主机名.当前目录(绝对路径)和提示符.这样会导致当进入一个比较深的目录 ...
- JS截取字符串常用方法
reference:http://www.jb51.net/article/42482.htm 使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字 ...
- 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- [设计模式] javascript 之 适配器模式
适配器模式说明 说明: 适配器模式,一般是为要使用的接口,不符本应用或本系统使用,而需引入的中间适配层类或对象的情况: 场景: 就好比我们买了台手机,买回来后发现,充电线插头是三插头,但家里,只有两插 ...
- 使用Ps制作透明ico
准备好图片 打开Ps新建透明图片->抠取图片->复制粘贴 保存为gif格式->使用ico在线转换即可
- IntelliJ IDEA 设置 编辑器字体大小
1,打开File->settings 2,在Edit->colors->Fonts下创建新字体 保存即可.
- hdu1950 最长上升子序列nlogn
简单. #include<cstdio> #include<cstring> #include<iostream> using namespace std; ; i ...