这个题目我最開始看题目看了半天,看不懂。。

可是通过看例子及答案最终看懂了。

。。

首先先解决等级的关系。

。假设等级越界。则不能交换。。所以原本等级的界限是

[rank[1]-m,rank[1]+m],可是这个边界里面会出现等级仅仅差大于m。所以等级的区间应该是

[rank[1]-m,rank[1]],[rank[1]-m+1,rank[1]+1]............等等。所以一直枚举到 [rank[1],rank[1]+m]..所以先通过枚举得到能够交换的点。

。然后就是题目的意思了。

我理解的优惠相当于是分解。

。。比方假设得到1号物品须要得到2号物品和8000金币。不就相当于1号到2号号为单向路劲,权值为8000.。

。求各个点到1号点的最短路加上这个点的价值。。

如图所看到的。

。。

1(10000)---------->2(1000)--------->4(50)

|              8000                  200    |

|--------------------->3(3000)----------|

5000                             200

绘图之后一目了然。。。

然后运用dijkstra解决。

。。

。。

。。

希望各位指正我的想法。。

代码例如以下:

#include<cstdio>
#include<cstring>
#define INF 0x3f3f3f3f
const int maxn=100+10;
int m,n;
int vis[maxn],dis[maxn],e[maxn][maxn];
int withtin[maxn],value[maxn],ranki[maxn]; int dijkstra()
{
int tmp,now,i,j;
memset(vis,0,sizeof(vis));
memset(dis,0x3f,sizeof(dis));
dis[1]=0;
for(i=1;i<=n;i++)
{
tmp=INF;
for(j=1;j<=n;j++)
{
if(!vis[j]&&withtin[j]&&dis[j]<tmp)
{
tmp=dis[j];
now=j;
}
}
vis[now]=1;
for(j=1;j<=n;j++)
{
if(!vis[j]&&withtin[j]&&dis[j]>dis[now]+e[now][j])
dis[j]=dis[now]+e[now][j];
}
}
tmp=INF;
for(i=1;i<=n;i++)
{
if(dis[i]+value[i]<tmp)
tmp=dis[i]+value[i];
}
return tmp;
} int main()
{
int i,j,t,cost;
int p,l,x,val,min_cost;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(e,0x3f,sizeof(e));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(i==j)
e[i][j]=0;
}
for(i=1;i<=n;i++)
{
scanf("%d%d%d",&value[i],&ranki[i],&x);
for(j=1;j<=x;j++)
{
scanf("%d%d",&t,&val);
e[i][t]=val;
}
}
min_cost=INF;
for(i=0;i<=m;i++)
{
memset(withtin,0,sizeof(withtin));
for(j=1;j<=n;j++)
{
if(ranki[j]>=ranki[1]-m+i&&ranki[j]<=ranki[1]+i)
withtin[j]=1;
}
cost=dijkstra();
if(cost<min_cost)
min_cost=cost;
}
printf("%d\n",min_cost);
}
}

poj1062昂贵的聘礼的更多相关文章

  1. POJ-1062 昂贵的聘礼 (最短路)

    POJ-1062 昂贵的聘礼:http://poj.org/problem?id=1062 题意: 有一个人要到1号点花费最少的钱,他可以花费一号点对应的价格,也可以先买下其他一些点,使得费用降低. ...

  2. POJ1062昂贵的聘礼[最短路建模]

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45892   Accepted: 13614 Descripti ...

  3. [poj1062]昂贵的聘礼_最短路_离散化

    昂贵的聘礼 poj-1062 题目大意:原文链接?不是英文题,自己看 注释:$1\le N \le 100$. 想法:开始的想法有些过于简单,因为落下了一个条件:就是等级限制是一条路径上的任意两点而不 ...

  4. POJ1062昂贵的聘礼(dijkstra)

    昂贵的聘礼 题目大意是说有N个物品,每个物品都有自己的价格,但同时某些物品也可以由其他的(可能不止一个)替代品,这些替代品的价格比较“优惠”,问怎么样选取可以让你的花费最少来购买到物品1 由于有N个物 ...

  5. POJ1062 昂贵的聘礼 【DFS】

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37475   Accepted: 10816 Descripti ...

  6. POJ1062昂贵的聘礼(经典) 枚举区间 +【Dijkstra】

    <题目链接>                   昂贵的聘礼 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用1000 ...

  7. poj1062 昂贵的聘礼

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

  8. POJ-1062 昂贵的聘礼---Dijkstra+枚举上界

    题目链接: https://vjudge.net/problem/POJ-1062 题目大意: 中文题 思路: 1是终点,可以额外添加一个源点0,0到任意一节点的距离就是这个点的money,最终求的是 ...

  9. POJ1062:昂贵的聘礼(枚举+迪杰斯特拉)

    http://poj.org/problem?id=1062 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为 ...

  10. POJ1062 昂贵的聘礼(带限制的spfa)

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

随机推荐

  1. 放棋游戏(NOIP模拟赛)(DP)

    没有原题... 囧.. [问题描述] 游戏规则是这样,有n(1<=n<=100)行格子,第一行由n个格子,第二行有n-1个格子,第三行由n-2个格子,……以此类推,第n行有1个格子.要求再 ...

  2. centos 安装使用smb

    http://blog.csdn.net/edu_enth/article/details/52964295

  3. UVA 10986 Sending email 最短路问题

    基本的最短路问题 就是数据需要稍微处理一下.(N比较大)dijkstra也要优化.不优化应该会T: #include <map> #include <set> #include ...

  4. PHPUnit安装(无需PEAR)

    转自:http://www.cnblogs.com/bourneli/articles/2447155.html   phpunit源代码下载:http://pear.phpunit.de/   如何 ...

  5. app:compileDebugNdk,NDK

    Error:Execution failed for task ':app:compileDebugNdk'. > Error: Your project contains C++ files ...

  6. bisect维护已排序的序列

    #!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import bisect # 用来处理已经排序好的序列,升序 # 二分查 ...

  7. const 作用

    转载自:http://www.cnblogs.com/xudong-bupt/p/3509567.html 1.const 修饰成员变量 1 #include<iostream> 2 us ...

  8. JAVA向EXE文件尾追加配置信息,用于解决局版客户端的程序IP配置问题

    package com.demo.blog; import java.io.DataOutputStream;import java.io.File;import java.io.FileOutput ...

  9. Nginx模块GeoIP匹配处理IP所在国家、城市

    https://www.haiyun.me/archives/nginx-geoip.html

  10. 陕西师范大学第七届程序设计竞赛网络同步赛 I 排队排队排队【数组任一位可以移动到队头,最少移动几次增序/数组指针操作】

    链接:https://www.nowcoder.com/acm/contest/121/I来源:牛客网 题目描述 ACM竞赛队内要开运动会啦!!!! 竞赛队内的一群阳光乐观积极的队员们迅速的在操场上站 ...