POJ1062

虽然是中文题目但是还是有一定几率都不准题目意思的:1.所有可能降价的措施不是降价多少钱而是降至多少钱2.等级范围:是你所走的那一条路中所有人中最好最低等级差不允许超过limit限制

思路确实没有想好:导致我也苦想冥思了很久,没有想到逆向构思其实这个题意你如果理解了,算起来也是逆向的~~肯定得花钱入手一个原价的然后层层入手优惠的直至买到1号物品,所以加了一个开始节点0,构建路也是逆向,例如买2可以优惠1,我就可以建2 -》1

第二点:对于等级的处理,这个真的是用了许多的方法,都没能全面的起作用,看了题解之后,明白了:枚举等级空间,因为我的等级空间是会首受限制的但是一开始就是m对于5级的1限制我要枚举的是假想的最大等级—也就是3,5|4,6,|5,7   也就是我要交流的就是和最低等级为3最高等级为5或者最低等级为4 最高等级为6 ……的

接下来,你会发现这个题的代码,和这个的思路一样的好看

#include <string.h>
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 110;
int mp[maxn][maxn];
int dis[maxn],vis[maxn];
struct node
{
int price,state;
}data[maxn];
int lim,n;
queue<int> q;
int spfa(int l,int r)
{
while(q.size())q.pop();
memset(vis,0,sizeof(vis));
for(int i = 1;i <= n;i++)
{
dis[i] = inf;
}
dis[0] = 0;vis[0] = 1;
q.push(0);
while(q.size())
{
int now = q.front();q.pop();
vis[now] = 0;
for(int i = 1;i <= n;i++)
{
if(data[i].state < l || data[i].state > r)continue;
if(dis[i] > dis[now] + mp[now][i])
{
dis[i] = dis[now] + mp[now][i];
if(!vis[i])
{
vis[i] = 1;
q.push(i);
}
}
}
}
return dis[1];
} int main()
{ while(~scanf("%d%d",&lim,&n))
{
for(int i = 0;i <= n;i++)
{
for(int j = 0;j <= n;j++)
{
i == j ? mp[i][j] = 0 : mp[i][j] = mp[j][i] = inf;
}
}
int x;
for(int i = 1;i <= n;i++)
{
scanf("%d%d%d",&data[i].price,&data[i].state,&x);
mp[0][i] = data[i].price;//倒图思想,我一开始肯定原价得进手一个图
while(x--)
{
int a;
scanf("%d",&a);
scanf("%d",&mp[a][i]);
}
}
int ans = inf;
for(int i = data[1].state - lim;i <= data[1].state;i++)
{
ans = min(ans,spfa(i,i+lim));
}
printf("%d\n",ans);
}
return 0;
}

POJ1062不错的题——spfa倒向建图——枚举等级限制的更多相关文章

  1. The Shortest Path in Nya Graph---hdu4725(spfa+扩点建图)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4725  有n个点,每个点都有一个层l[i],相邻层的边有一条无向带权边,权值为都为C,另外 ...

  2. HDU 4725 The Shortest Path in Nya Graph(spfa+虚拟点建图)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题目大意:有n层,n个点分布在这些层上,相邻层的点是可以联通的且距离为c,还有额外给出了m个条边 ...

  3. Newnode's NOI(P?)模拟赛 第三题 (主席树优化建图 + tarjan)

    题目/题解戳这里 这道题题目保证a,b,ca,b,ca,b,c各是一个排列-mdzz考场上想到正解但是没看到是排列,相等的情况想了半天-然后写了暴力60分走人- 由于两两间关系一定,那么就是一个竞赛图 ...

  4. 【spfa训练】HDU4725 (层级建图)

    HDU4725 题目大意:一些节点分布在不同的层上,已知相邻的层可以往来距离为c,在给你一些已知的边,问你点1-n的最短路 分析:越往后做,越觉得最短路的考点已经不是spfa算法还是dijkscar算 ...

  5. HDU 4370 0 or 1(spfa+思维建图+计算最小环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4370 题目大意:有一个n*n的矩阵Cij(1<=i,j<=n),要找到矩阵Xij(i< ...

  6. Codeforces 938D. Buy a Ticket (最短路+建图)

    <题目链接> 题目大意: 有n座城市,每一个城市都有一个听演唱会的价格,这n座城市由m条无向边连接,每天变都有其对应的边权.现在要求出每个城市的人,看一场演唱会的最小价值(总共花费的价值= ...

  7. bzoj2662: [BeiJing wc2012]冻结 最短路 建图

    好久没有1A题啦♪(^∇^*) 一个sb建图,我居然调样例调了10min 看起来是双向边,其实在建图的时候要当成有向图, 否则他会时间倒流(233) 把每个点裂成k个点,然后把每条边裂成4条边(正向反 ...

  8. 洛谷3783 SDOI2017 天才黑客(最短路+虚树+边转点+线段树优化建图)

    成功又一次自闭了 怕不是猪国杀之后最自闭的一次 一看到最短路径. 我们就能推测这应该是个最短路题 现在考虑怎么建图 根据题目的意思,我们可以发现,在本题中,边与边之间存在一些转换关系,但是点与点之间并 ...

  9. Invitation Cards(邻接表+逆向建图+SPFA)

    Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 17538   Accepted: 5721 Description In ...

随机推荐

  1. linux一些基本常识(四)

    tail -f时时监控 一开启内存最小位u原则,尽量优化代码 grep -v "" /etc/passwd 这样行不行 怎么清除last nice调整进程运行级别 pkill是匹配 ...

  2. Spring Cloud feign

    Spring Cloud feign使用 前言 环境准备 应用模块 应用程序 应用启动 feign特性 综上 1. 前言 我们在前一篇文章中讲了一些我使用过的一些http的框架 服务间通信之Http框 ...

  3. spring-boot PageHelper

    分页插件PageHelper 参看了pagehelper-spring-boot,使用起来非常放方便,关于更多PageHelper可以点击https://github.com/pagehelper/M ...

  4. VB 共享软件防破解设计技术初探(二)

    VB 共享软件防破解设计技术初探(二) ×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(一)http ...

  5. poj3186(区间DP)

    题目链接:http://poj.org/problem?id=3186 思路: 区间DP,给treat编号为1..n,状态很明显是上界i和下界j,dp[i][j]表示从下标i到下标j之间数据的最大价值 ...

  6. suse11 sp4(虚拟机) 能ping通主机,但是主机ping不通suse虚拟机

    sese的防火墙没关. 查看防火墙状态: rcSuSEfirewall2 status(必须是root账户,sudo都不行) 关闭防火墙:rcSuSEfirewall2 stop 事实上,防火墙有时候 ...

  7. mysql优化概述2

    一.索引的概念 利用关键字,就是记录的部分数据(某个字段,某些字段,某个字段的一部份),建立与记录位置的对应关系,就是索引.索引的关键字一定是排序的. 二.索引的类型 mysql支持四种索引: 1.主 ...

  8. js记录

    --获取后缀名,结果 .jpg var extName = "/upload/head_img/20150902102539.jpg";var ta = extName.subst ...

  9. laravel创建控制器

    一.创建 php artisan make:controller Admin/IndexController 二.目录 app/Http/Controllers/ 控制器存储目录 [ C控制器 ]

  10. Telnet 安装

    Telnet 安装 一.Telnet 安装 (1) 登录目标主机检测 telnet 服务是否正常 [root@localhost ~]# telnet localhost -bash: telnet: ...