poj1062昂贵的聘礼
这个题目我最開始看题目看了半天,看不懂。。
可是通过看例子及答案最终看懂了。
。。
首先先解决等级的关系。
。假设等级越界。则不能交换。。所以原本等级的界限是
[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昂贵的聘礼的更多相关文章
- POJ-1062 昂贵的聘礼 (最短路)
POJ-1062 昂贵的聘礼:http://poj.org/problem?id=1062 题意: 有一个人要到1号点花费最少的钱,他可以花费一号点对应的价格,也可以先买下其他一些点,使得费用降低. ...
- POJ1062昂贵的聘礼[最短路建模]
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 45892 Accepted: 13614 Descripti ...
- [poj1062]昂贵的聘礼_最短路_离散化
昂贵的聘礼 poj-1062 题目大意:原文链接?不是英文题,自己看 注释:$1\le N \le 100$. 想法:开始的想法有些过于简单,因为落下了一个条件:就是等级限制是一条路径上的任意两点而不 ...
- POJ1062昂贵的聘礼(dijkstra)
昂贵的聘礼 题目大意是说有N个物品,每个物品都有自己的价格,但同时某些物品也可以由其他的(可能不止一个)替代品,这些替代品的价格比较“优惠”,问怎么样选取可以让你的花费最少来购买到物品1 由于有N个物 ...
- POJ1062 昂贵的聘礼 【DFS】
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37475 Accepted: 10816 Descripti ...
- POJ1062昂贵的聘礼(经典) 枚举区间 +【Dijkstra】
<题目链接> 昂贵的聘礼 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用1000 ...
- poj1062 昂贵的聘礼
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- POJ-1062 昂贵的聘礼---Dijkstra+枚举上界
题目链接: https://vjudge.net/problem/POJ-1062 题目大意: 中文题 思路: 1是终点,可以额外添加一个源点0,0到任意一节点的距离就是这个点的money,最终求的是 ...
- POJ1062:昂贵的聘礼(枚举+迪杰斯特拉)
http://poj.org/problem?id=1062 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为 ...
- POJ1062 昂贵的聘礼(带限制的spfa)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
随机推荐
- 【友盟统计报表解读】之错误分析iOS版
http://bbs.umeng.com/thread-6908-1-1.html 错误分析功能说明1.概述 错误分析是友盟为移动开发者提供的Crash收集和分析工具,帮助开发者监测App在移动设备上 ...
- 手一抖误删了根目录 /usr 之后的挽救过程
一切悲剧来源于写的Shell没有好好检查,执行后把开发机的根目录 /usr 目录给删除了,而且是root执行,众所周知,/usr目录里有大量的应用层程序,删除之后导致大量命令无法使用,如 ssh / ...
- Linux平台用C++实现事件对象,同步线程
前文在Win32平台上用C++实现了事件对象Event,对线程进行同步,以达到期望目的.这次在Linux平台上实现与之类似的事件对象.与其相关的一组API包括:pthread_mutex_init,p ...
- javascript与mongodb的日期时区问题
默认情况下,js的日期生成是当地时区,但默认显示是按照GMT显示的: > var c = new Date('2017-10-31 06:00:00'); > c 2017-10-30T2 ...
- 【linux高级程序设计】(第十五章)UDP网络编程应用 5
域名与IP信息解析 /etc/hosts 文件中有部分IP地址与域名主机名的信息 /etc/resolv.conf 里面有DNS服务器的IP地址 struct hostent { char *h_na ...
- 【原创】DataPackage-数据库、表的区域设置和系统不一致导致处理失败
问题描述: 最近学习Datapackage,创建完之后,部署处理但总是提示某某字段的区域设置和目标字段的区域设置不一致,具体如图: 测试发现其它的数据库表又没有这类的问题发生,甚是苦恼,搜寻了好久,后 ...
- [BZOJ4990][Usaco2017 Feb]Why Did the Cow Cross the Road II dp
4990: [Usaco2017 Feb]Why Did the Cow Cross the Road II Time Limit: 10 Sec Memory Limit: 128 MBSubmi ...
- AC日记——Maximal GCD codeforces 803c
803C - Maximal GCD 思路: 最大的公约数是n的因数: 然后看范围k<=10^10; 单是答案都会超时: 但是,仔细读题会发现,n必须不小于k*(k+1)/2: 所以,当k不小于 ...
- Usage of API documented as @since 1.6+
报错:即方法是Java1.6才开始有的 File ->Project Structure->Project Settings -> Modules -> Language Le ...
- 51nod 1062 序列中最大的数【打表】
1062 序列中最大的数 题目来源: Ural 1079 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 有这样一个序列a: a[0] = 0 a[ ...