poj1062 Bellman 最短路应用

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

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

//这道是中文题,我居然还理解错了题意.本题的等级差是指  : 最高等级与最低等级的差值,并非每两个人之间的差值.

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <queue>
#include <vector>
#define ll long long
#define inf 0x3f3f3f3fusing namespace std;
int n,m;
struct node{int p;int l;int x;
}a[110];
struct Nd{int num;int money;
}now;
int s,e;
vector<Nd>vec[110];
int vis[110];
int dis[110];
int ans;
void spfa(){memset(vis,0,sizeof(vis));memset(dis,inf,sizeof(dis));queue<int>q;q.push(1);vis[1] = 1;dis[1] = a[1].p;while(!q.empty()){int u = q.front();q.pop();vis[u] = 0;for(int i = 0; i < vec[u].size(); ++i){now = vec[u][i];if(dis[now.num] > dis[u]-a[u].p+a[now.num].p+now.money&&a[now.num].l>=s && a[now.num].l<=e){dis[now.num] = dis[u]-a[u].p+a[now.num].p+now.money;if(!vis[now.num]){vis[now.num] = 1;q.push(now.num);}}}}for(int i = 1; i <= n; ++i){ans = min(ans,dis[i]);}
}
int main()
{while(~scanf("%d%d",&m,&n)){for(int i = 0; i <= n; ++i){vec[i].clear();}for(int i = 1; i <= n; ++i){scanf("%d%d%d",&a[i].p,&a[i].l,&a[i].x);for(int j = 0; j < a[i].x; ++j){scanf("%d%d",&now.num,&now.money);vec[i].push_back(now);}}ans = inf;for(int i = a[1].l-m; i <= a[1].l; ++i){s = i;e = i+m;spfa();}printf("%d\n",ans);}return 0;
}


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#define INF 200000000using namespace std;struct node
{int u,v,w;
} edge[10000];
int num=0;
int N,M;
int P[2000],L[2000],n[2000];
int t,v;
int low[2000],a,b;
int has[2000] ;
int Bellman(int u0)
{for(int i=0; i<=N; i++)low[i]=INF;low[u0]=0;for(int i=0; i<N-1; i++){int flag=0;for(int j=0; j<num; j++){if(has[edge[j].u]&&has[edge[j].v]&&low[edge[j].u]+edge[j].w<low[edge[j].v]){low[edge[j].v]=low[edge[j].u]+edge[j].w;flag=1;}}if(flag==0)break;}int Min=INF;for(int i=1; i<=N; i++){low[i]+=P[i];        //最小价格为优惠价+拥有优惠价须要花多少钱if(Min>low[i])Min=low[i];}//printf("%d\n",Min);return Min; 
}
int main()
{//freopen("in.txt","r",stdin);while(~scanf("%d%d",&M,&N)){num=0;for(int i=1; i<=N; i++){scanf("%d%d%d",&P[i],&L[i],&n[i]);for(int j=1; j<=n[i]; j++){int a,b;scanf("%d%d",&a,&b);edge[num].u=i;edge[num].v=a;edge[num++].w=b;       //存入优惠的价格}}int ans=L[1];int Min=INF;//最高等级的与最低的等级差不会超过Mfor(int i=0; i<=M; i++){memset(has,0,sizeof(has));for(int j=1; j<=N; j++){if(ans-L[j]<=M-i&&L[j]-ans<=i){has[j]=1;}}int k=Bellman(1);if(Min>k)Min=k;}printf("%d\n",Min);        }
}


转载于:https://www.cnblogs.com/jzssuanfa/p/7061618.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vlookup练习_大胆合并吧!VLOOKUP坐字法专做单元格合并查找

回复[目录]学习113篇Excel教程全套Excel视频教程&#xff0c;微信扫码观看编按&#xff1a;前面才讲了Excel家规&#xff0c;数据源表不能有合并单元格&#xff0c;今天就嘚瑟地呼吁“大胆合并”。为何&#xff1f;因为老菜鸟给大家带来了单元格合并查找利器VLOOKUP坐字法查找。…

第一代计算机主要应用领域为数据处理,第一代计算机主要应用领域为____。    A.数据处理 B.人工智能 C.科学计算 D.过程控制...

C、科学计算。一代主要用于科学计算&#xff0c;二代用与数据处理。计算机发明者约翰冯诺依曼。计算机是20世纪最先进的科学技术发明之一&#xff0c;对人类的生产活动和社会活动产生了极其重要的影响&#xff0c;并以强大的生命力飞速发展。它的应用领域从最初的军事科研应用扩…

jaxb 映射 空字段_JAXB和未映射的属性

jaxb 映射 空字段JAXB&#xff08;JSR-222&#xff09;是例外配置&#xff0c;这意味着存在默认映射应用于域对象。 这意味着有时您需要显式排除字段/属性。 在这篇文章中&#xff0c;我将讨论如何使用XmlTransient或XmlAccessorType&#xff08;XmlAccessType.NONE&#xff09…

vscode 书签_10个我必备的 VS code 拓展

推荐&#xff1a;Vue 3中令人激动的新功能&#xff1a;FragmentSuspense多v-modelVS Code是我最喜欢的文本编辑器。它是目前最可扩展的、最流行的代码编辑器。而且令人惊讶的是&#xff0c;它是由微软制作的(我知道)。在我看来&#xff0c;没有任何其他IDE或编辑器能比VS Code更…

u盘显示项目不在计算机zhng,能装在u盘上的操作系统有哪些?

满意答案zhng9211推荐于 2016.08.27采纳率&#xff1a;51% 等级&#xff1a;11已帮助&#xff1a;7556人可装在U盘上的操作系统现在的计算机技术简直日新月异&#xff0c;U盘&#xff0c;固态硬盘等等存储介质做的可以越来越大&#xff0c;并越来越便宜。电脑已经不是稀罕物…

推荐 -- 极客导航,让工作学习更有效率

给大家推荐一个导航&#xff0c;很实用&#xff1b;极客导航精心挑选网址&#xff0c;让您的工作更有效率&#xff1b; 传送门&#xff1a; http://www.gogeeks.cn/ 转载于:https://www.cnblogs.com/JsonShare/p/7064438.html

从数组到流再到Java 8

不久前&#xff0c;我们将一些Eclipse插件项目升级到Java8。此后再也没有回头。 除其他事项外&#xff0c;使用lambda和streams API &#xff0c;过滤&#xff0c;映射和查找集合中的元素变得更加容易和简洁。 我想到目前为止&#xff0c;对于大多数人来说&#xff0c;什么都没…

iphone型号表_机器人造iPhone,苹果奋斗八年,还是败给了富士康工人

8 年前&#xff0c;当蒂姆 库克在富士康观看机器人进行 iPad 实验生产视频时&#xff0c;似乎看到了新时代的希望。郭台铭曾表示&#xff0c;预计在 2014 年可以在富士康工厂中部署 100 万台机器人&#xff0c;进而实现高度自动化的「无人工厂」。机器之心报道&#xff0c;参与…

笔记本如何选择修复计算机,如何处理旧的笔记本电脑?这些操作必不可少!

原标题&#xff1a;如何处理旧的笔记本电脑&#xff1f;这些操作必不可少&#xff01;如何处理旧的笔记本电脑&#xff1f;不要把它丢掉。那台旧笔记本电脑至少应适当回收。就算是打算仅回收旧笔记本电脑&#xff0c;也请确保有效擦除所有数据。备份如今&#xff0c;云服务如此…

Android开源工具项目集合

最近因为要去外派了&#xff0c;工欲善其事&#xff0c;必先利其器&#xff01;所以又回顾了一下自己github上所收藏的项目&#xff0c;也算是温故而知新吧。 最流行的Android组件大全 http://www.open-open.com/lib/view/open1409108030307.html android开源项目分类汇总 http…

算法工程师和python_算法工程师只掌握Python行吗?如果在java和cpp中选一门语言学习哪个更有用?...

算法工程师只掌握python有可能不够用的。算法本身是脱离编程语言的。以目前的市场环境格局&#xff0c;大量的算法工程师都不可能全部时间精力投入到算法研究上来&#xff0c;是要实际参与到也许项目里面去的。不论是ai相关的模式识别方面的算法还是传统的一些计算机确定性算法…

删除 终端服务器,终端服务器命令更改 - Windows Server | Microsoft Docs

终端服务器命令&#xff1a;更改09/14/2020本文内容本文提供有关终端服务器命令的一些信息 change 。适用于&#xff1a; Windows Server 2012R2原始 KB 编号&#xff1a; 186504摘要该命令 change 将替换 Citrix Winframe 中的 CHGLOGON、CHGUSER 和 CHGPORT。更改实用程序…

Android-Universal-Image-Loader学习笔记(3)--内存缓存

前面的两篇博客写了文件缓存。如今说说Android-Universal-Image-Loader的内存缓存。该内存缓存涉及到的类如图所看到的 这些类的继承关系例如以下图所看到的&#xff1a; 如同文件缓存一样&#xff0c;内存缓存涉及的接口也有两个&#xff1a;MemoryCacheAware 和MemoryCache&a…

java nosql_Java EE的NoSQL的未来

java nosql从现在开始一段时间以来&#xff0c;我一直在关注NoSQL的近期发展势头&#xff0c;似乎这个流行语也引起了企业Java界的某种关注。 即EclipseLink 2.4开始支持MongoDB和Oracle NoSQL 。 将EclipseLink作为JPA参考实现&#xff0c;您可能想知道这对Java EE 7意味着什么…

css设置字体颜色怎么设,css里面怎么设置字体颜色?

在html中我们经常要用到css样式来美化html标签的一些不足之处&#xff0c;今天我们就来说说如何用css的基本样式来改变文本的颜色&#xff0c;文章通俗易懂&#xff0c;希望大家看完后能练习练习加深印象。一、首先我们先给大家看个html字体的基础代码&#xff1a;HTML中文网字…

visio科学图形包_科学网—科研必备:几款好用的流程图工具,助力你的论文/科研绘图...

写SCI论文常常会遇到一个问题——如何才能让读者通俗易懂地理解自己的研究&#xff1f;如果不能让读者了解研究过程&#xff0c;读者会对研究结果是否合理、如何应用存在疑问&#xff1b;尤其是期刊编辑和审稿人如果不能通过咱们的叙述&#xff0c;清楚地了解研究内容&#xff…

网络通信基础(草稿)

应用层&#xff1a;httpd/ssh/ 等软件 应用层功能&#xff1a;规定应用程序的数据格式。传输层&#xff1a;tcp/udp --> port&#xff0c;唯一标识一个主机上的某个进程 端口范围0-65535&#xff0c;0-1023为系统占用端口 传输层的功能&#xff1a;建立端口到端口的通信…

JSF范围教程– JSF / CDI会话范围

会话作用域跨越多个HTTP请求-响应周期&#xff08;理论上是无限的&#xff09;。 当您需要每个HTTP请求-响应周期进行一次交互时&#xff0c;请求作用域在任何Web应用程序中都非常有用。 但是&#xff0c;当您需要对属于用户会话的任何HTTP请求-响应周期可见的对象时&#xf…

css 关闭按钮实现,CSS做的关闭按钮动效

CSS语言&#xff1a;CSSSCSS确定* {padding: 0;margin: 0;box-sizing: border-box;}body {background: #141926;font-family: Helvetica, Arial, sans-serif;}.outer {position: relative;margin: auto;width: 70px;margin-top: 200px;cursor: pointer;}.inner {width: inherit…

数字通信原理_光耦继电器在实际应用中的作用以及工作原理!

光耦继电器---先进光半导体由于光耦继电器输入输出间互相隔离&#xff0c;电信号传输具有单向性等特点&#xff0c;因而具有良好的电绝缘能力和抗干扰能力。又由于光耦的输入端属于电流型工作的低阻元件&#xff0c;因而具有很强的共模抑制能力。所以&#xff0c;它在长线传输信…