POJ1062昂贵的聘礼(经典) 枚举区间 +【Dijkstra】
<题目链接>
昂贵的聘礼
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 解题分析:首先,本题要解决如何让交换的所有人等级之差不超过k,因为在松弛操作的时候有很多种情况,所以我们不能通过简单的判断去简化这个问题,只能暴力枚举符合条件的等级区间,因为枚举的区间一定要包含酋长,所以枚举区间为[node[1].lev-k,node[1].lev]……[node[1].lev,node[1].lev+k]。枚举区间确定后,就要解决dijkstra的松弛问题了。本题图解分析如下: 以上这种贪心松弛策略是错的(T_T),因为我们可以通过交易其他的物品来减少当前物品的花费,所以如果你直接加上当前点的基础价格就不能保证每次找的都是当前最短的的那条路的终点。正解是先求出起点到达每个点的最短路,然后再加上终点物品的基础价值,最后进行比较。
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 #define INF 0x3f3f3f3f 7 int k,n,le,ri; 8 int dis[110],mpa[110][110]; 9 struct NODE{ 10 int val,lev; 11 }node[110]; 12 bool vis[110]; 13 void dij(){ 14 memset(vis,false,sizeof(vis)); 15 memset(dis,INF,sizeof(dis)); 16 //dis[1]=node[1].val; 17 dis[1]=0; 18 int cur=1; 19 for(int i=1;i<=n;i++){ 20 vis[cur]=true; 21 for(int j=1;j<=n;j++){ 22 /*if(!vis[j]&&node[j].lev>=le&&node[j].lev<=ri&&dis[j]>dis[cur]-node[cur].val+mpa[cur][j]+node[j].val){ 23 dis[j]=dis[cur]-node[cur].val+mpa[cur][j]+node[j].val; 24 }*/ //这种方法会WA 25 if(!vis[j]&&node[j].lev>=le&&node[j].lev<=ri&&dis[j]>dis[cur]+mpa[cur][j]){ 26 dis[j]=dis[cur]+mpa[cur][j]; 27 } 28 } 29 int res=INF; 30 for(int j=1;j<=n;j++){ 31 if(!vis[j]&&node[j].lev>=le&&node[j].lev<=ri&&dis[j]<res){ 32 res=dis[j]; 33 cur=j; 34 } 35 } 36 } 37 } 38 int main(){ 39 while(scanf("%d%d",&k,&n)!=EOF){ 40 memset(mpa,INF,sizeof(mpa)); 41 for(int i=1;i<=n;i++){ 42 int m;scanf("%d%d%d",&node[i].val,&node[i].lev,&m); 43 while(m--){ 44 int v,w; 45 scanf("%d%d",&v,&w); 46 if(w<mpa[i][v])mpa[i][v]=w; //建立这个物品到其它可交换物品的边 47 } 48 } 49 int ans=INF; 50 le=node[1].lev-k,ri=node[1].lev; 51 while(le<=node[1].lev){ 52 dij(); 53 for(int i=1;i<=n;i++){ 54 //ans=min(ans,dis[i]); 55 ans=min(ans,dis[i]+node[i].val); //算出到所有物品的最短路径,最后再加上终点物品的价值 56 } 57 le++,ri++; 58 } 59 printf("%d\n",ans); 60 } 61 return 0; 62 }
2018-08-31
转载于:https://www.cnblogs.com/00isok/p/9565943.html
POJ1062昂贵的聘礼(经典) 枚举区间 +【Dijkstra】相关推荐
- POJ1062 昂贵的聘礼(最短路径)
题意: 中文题 要点: 等级比较难处理,注意题目中是间接接触也不行,所以假如酋长等级是5,差距为2,可以交换的等级有(3,4,5),(4,5,6),(5,6,7),也即是区间长度是m,交换中最大的与最 ...
- poj1062昂贵的聘礼(Dijkstra**)
1 /* 2 题意: 物主有一个物品,价值为P,地位为L, 以及一系列的替代品Ti和该替代品所对应的"优惠"Vi 3 g[u][i] 表示的是u物品被i物品替换后的优惠价格!(u& ...
- 【题解】昂贵的聘礼 POJ - 1062 (最短路 经典)⭐⭐⭐⭐
昂贵的聘礼 POJ - 1062 你想娶酋长的女儿,但酋长要求你给一定数额金钱的聘礼.除了金钱外,酋长也允许你用部落里其他人的某物品加上一点钱作为聘礼.而其他人的物品也可以通过指定的另外一些人的某物品 ...
- POJ 1062 昂贵的聘礼【经典的最短路问题】
原题链接:http://poj.org/problem?id=1062 我的链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=19651 ...
- POJ 1062 昂贵的聘礼 (dijkstra)
昂贵的聘礼 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说 ...
- POJ 1062 昂贵的聘礼
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 30252 Accepted: 8465 Descriptio ...
- 解题报告:POJ - 1062 昂贵的聘礼(最短路、超级源点)
整理的算法模板合集: ACM模板 AcWing 903. 昂贵的聘礼 [思路] 由于本题只有终点,没有起点,所以我们建一个超级源点S=0S = 0S=0 ,源点与各各点的权值就是他们的价格 如下图所示 ...
- 昂贵的聘礼「最短路」「思维」
昂贵的聘礼 题目描述: n个物品,每个物品都有一个价值,且每个物品x都有一个替代队列,这个替代队列中,每个替代品y都有一个优惠价格c,你可以使用一个替代品y + 该替代品的优惠价格c换的所需物品x 每 ...
- 903. 昂贵的聘礼题解(建图挺有趣的)
昂贵的聘礼原题 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用 10000 个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求 ...
最新文章
- Java-JSON 解析
- php文件之间相互引用路径问题的一般处理方法
- 前端学习(1043):回车把数据存储到本地存储里面
- LinuxQt工作笔记-查看程序工作目录
- ORM 革命 —— 复兴 | ORM Revolution -- Revived
- Reverse Linked List 反转链表
- java从入门到精通 答案_java从入门到精通练习题答案.doc
- (KNN)K-近邻算法介绍和 Facebook签到位置预测案例应用
- 解决高德地图闪屏黑屏
- 【X86】---关于Intel芯片架构的发展史
- 六角填数(全排列)蓝桥杯真题
- 【Android Jetpack】Room——基本使用篇
- 面对对象程序设计---第一次blog
- 【深入理解JS核心技术】2. 什么是原型链?
- 保姆级 Java 后端线上问题排查常用命令收藏
- HTML禁止复制粘贴以及禁止下载图片的小技巧
- Modbus CRC16校验方法及实现代码
- STM32 NUCLEO开发板通过Mini USB供电
- 小米MIUI双系统原理及刷机
- vue项目使用 npm run build 打包后出现样式错乱问题解决方法
热门文章
- 【简短】Autodesk宣布支持Windows 7
- 傳統經理人的迷思(转)
- 【Python笔记】网络编程
- 如何在shell中执行 字符串拼接起来的命令 cmd = ls / 执行方法:$cmd
- pythonNumpy元素特定条件查找过滤[博]
- ubuntu环境变量相关文件/etc/profile,/etc/bash.bashrc,~/.profile,~/.bashrc区别
- 那些拆中台的CTO,70%被裁了
- 为什么说堡垒机是企业IT运维的“安全终结者”?
- 2019年企业数据生产力调研报告,90%的人都没看过
- 如何理解DT将是未来IT的转型之路?