poj1062--昂贵的聘礼

2024-08-25 01:38
文章标签 聘礼 昂贵 poj1062

本文主要是介绍poj1062--昂贵的聘礼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昂贵的聘礼
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 35384 Accepted: 10130

Description

年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。"探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,他可以降低价格。探险家于是又跑到其他地方,其他人也提出了类似的要求,或者直接用金币换,或者找到其他东西就可以降低价格。不过探险家没必要用多样东西去换一样东西,因为不会得到更低的价格。探险家现在很需要你的帮忙,让他用最少的金币娶到自己的心上人。另外他要告诉你的是,在这个部落里,等级观念十分森严。地位差距超过一定限制的两个人之间不会进行任何形式的直接接触,包括交易。他是一个外来人,所以可以不受这些限制。但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样。因此你需要在考虑所有的情况以后给他提供一个最好的方案。 
为了方便起见,我们把所有的物品从1开始进行编号,酋长的允诺也看作一个物品,并且编号总是1。每个物品都有对应的价格P,主人的地位等级L,以及一系列的替代品Ti和该替代品所对应的"优惠"Vi。如果两人地位等级差距超过了M,就不能"间接交易"。你必须根据这些数据来计算出探险家最少需要多少金币才能娶到酋长的女儿。 

Input

输入第一行是两个整数M,N(1 <= N <= 100),依次表示地位等级差距限制和物品的总数。接下来按照编号从小到大依次给出了N个物品的描述。每个物品的描述开头是三个非负整数P、L、X(X < N),依次表示该物品的价格、主人的地位等级和替代品总数。接下来X行每行包括两个整数T和V,分别表示替代品的编号和"优惠价格"。

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

poj少有的汉语题啊,不过读题简单了,题目难了,用了贝尔曼--福特的方法,所有的数据存储在结构体中,进行n-1次遍历,其中要注意的是等级的问题,等级差需要由:酋长的等级-m 一直到酋长的等级,遍历

#include <stdio.h>
#define maxint 99999999
struct node
{int mon ;int l ;int n ;int u[102] ;int w[102] ;
} p[102];
int dis[200] ;
int main()
{int m , x , y , n , i , j , k ;scanf("%d %d", &m, &n);for(i = 1 ; i <= n ; i++){scanf("%d %d %d", &p[i].mon, &p[i].l, &p[i].n);for(j = 0 ; j < p[i].n ; j++)scanf("%d %d", &p[i].u[j], &p[i].w[j]);}int low , top ;low = p[1].l - m ;top = p[1].l + m ;int mon = maxint ;while(low <= p[1].l){x = low ;y = low + m ;low++ ;for(i = 1 ; i <= n ; i++)dis[i] = maxint ;dis[1] = p[1].mon ;for(i = 0 ; i < n ; i++){int flag = 1 ;for(j = 1 ; j <= n ; j++){if(p[j].l < x || p[j].l > y)continue ;for(k = 0 ; k < p[j].n ; k++){if( p[ p[j].u[k] ].l >= x && p[ p[j].u[k] ].l <= y && dis[ p[j].u[k] ] > dis[j] - p[j].mon + p[j].w[k] + p[ p[j].u[k] ].mon ){dis[ p[j].u[k] ] = dis[j] - p[j].mon + p[j].w[k] + p[ p[j].u[k] ].mon ;flag = 0 ;}}}if(flag)break;}for(i = 1 ; i <= n ; i++)if(dis[i] < mon)mon = dis[i] ;}printf("%d\n", mon);return 0;
}


这篇关于poj1062--昂贵的聘礼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104191

相关文章

POJ训练计划1062_昂贵的聘礼(最短路)

昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 35560 Accepted: 10171 Description 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说

POJ 1062昂贵的聘礼(dijk最短路)

题目地址:http://poj.org/problem?id=1062 妈蛋。。把mp数组初始化写到里边去了。。。每次输出一个都初始化了一遍。。这还有没有救。。。 这题看了一段时间,不会做。。主要是题目的数据范围给的非常不清楚。总想着只求一次最短路就可以。看了题解才发现枚举等级范围也不会超时。。然后后面 的就简单了 #include <iostream>#include <stdio.

POJ1062 Expensive dowry 【最短路dijkstra】

详细看:http://blog.csdn.net/lyy289065406/article/details/6645852 简单说一下:每个物品是一个结点,边的权值是,edge[u][v]的值表示用物品u换物品v的价格 一开始所有物品都置为原价,即所有dist[i]为原价,用dijkstra算法,算出0点(啥物品都没有)到各点的最短距离,求出dist[1]即为花费 枚举每个物品的等级为这条交

昂贵的聘礼(SPFA最短路)

最短路问题,建图(有向图),以1点为源点,枚举等级的限制,即每次都用spfa 求得1点到其他能够到达的点(由于等级的限制,在一次spfa中可能并不是所有的点都能够到达),最后求出所需最小费用。 #include <iostream>#include <queue>#include <cstring>using namespace std;#define Max 110#defi

抛弃昂贵BI,企业仍可低成本实现数据分析

有的读者看完《BI工具选型不入坑,你要这么选》这篇文章就陷入迷茫了,我要做企业级数据分析,看过去各家产品都各有千秋,实在难以抉择,或者已经选了仍是纠结不已。 这里我抛出另一种思路:如果不用BI,企业数据分析仍可以很好实现,而且成本非常低廉,甚至可以免费。 这里说的免费不是要去选择开源的BI 产品,这样就可以避免做数仓,因为对很多人来说设计一个灵活可以适应各种产品工具分析和需求的数仓也是

C++备忘录002:Structured Binding, 会生成临时变量,可能有昂贵的拷贝

auto [u, v] = s相当于如下代码 auto e = s;alias u = e.member1;alias v = e.member2; 注意,此时临时变量e是个拷贝,u和v相当于别名 int main() { struct Y {int a;std::string b;};auto y = Y{10, "h

poj1062 Dijkstra 求最短路

昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 31623 Accepted: 8930 Description 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:

POJ - 1062 昂贵的聘礼 最短路+枚举+思维建图

题目链接 POJ-1062 题意 中文题直接贴题干了 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。“探险家就跑到大祭司那里,向他

POJ 1062 昂贵的聘礼 (最短路应用 Dijkstra算法)

昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 41464 Accepted: 12103 Description 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降

马斯克:一旦实现全自动驾驶 特斯拉汽车将变得更加昂贵

【TechWeb】7月9日消息,据国外媒体报道,特斯拉首席执行官(CEO)埃隆·马斯克(Elon Musk)表示,当全自动驾驶模式成为现实时,特斯拉汽车将变得更加昂贵。 长期以来,马斯克一直坚称,购买特斯拉汽车代表着一项投资,随着时间的推移,该公司汽车会升值,这导致一位粉丝质疑,消费者购买特斯拉汽车的时间是否有限了。 对于这个问题,马斯克的回答是“Yes”,但后来他又解释说,该公司仍将销售汽车