[poj 1502]昂贵的聘礼
一道不算太难的最短路喵~
容我吐槽一下,酋长的地位居然不是最高的额——那你特么的居然还算是酋长?!
枚举一个地位区间 [i..i+M-1] 只要所有的交易者的地位都在该区间中,那么就不会引起冲突
而这个可悲的酋长是必须在区间中的,所以若酋长的地位为 L0 那么该枚举的区间就是 [L0-i, L0+M-i] {i|0<=i<=M}
然后就是裸的 dijkstra 了,取出地位在区间中的点,然后新增一个点 N+1,向所有点连边,距离是所有物品的直接价格
若 物品 i 可以通过 物品 j 来降价,那么从 j 向 i 连一条边,距离为降价后的价格
以 N+1 为源点跑一个最短路就可以了
我发现带内部调整的优先队列不是蛮好写的嘛~
#include <cstdio>
#include <cstring>
const int sizeOfPoint=;
const int sizeOfEdge=; int n;
int h[sizeOfPoint];
inline int getint();
inline void putint(int); struct edge {int point, dist; edge * next;};
edge memory[sizeOfEdge], * port=memory;
edge * e[sizeOfPoint];
inline edge * newedge(int point, int dist, edge * next)
{
edge * ret=port++;
ret->point=point; ret->dist=dist; ret->next=next;
return ret;
}
inline void link(int u, int v, int d)
{
e[u]=newedge(v, d, e[u]); e[v]=newedge(u, d, e[v]);
} struct priority_queue
{
int size, q[sizeOfPoint];
int id[sizeOfPoint];
inline int front() {return q[];}
inline bool exist(int x) {return id[x]>;}
inline void down(int i)
{
register int x=q[i];
register int j;
for (j=i<<;j<=size;i=j, j=i<<)
{
if (j<size && h[q[j+]]<h[q[j]]) j++;
if (h[q[j]]<h[x]) id[q[i]=q[j]]=i;
else break;
}
id[q[i]=x]=i;
}
inline void up(int i)
{
register int x=q[i];
register int j;
for (j=i>>;j;i=j, j=i>>)
if (h[q[j]]>h[x]) id[q[i]=q[j]]=i;
else break;
id[q[i]=x]=i;
}
inline void build(int _size)
{
size=_size;
for (int i=;i<=size;i++) id[q[i]=i]=i;
for (int i=size>>;i;i--) down(i);
}
inline void pop()
{
id[q[]]=;
id[q[]=q[size--]]=;
down();
}
inline void deskey(int x)
{
up(id[x]);
}
}; inline int min(int x, int y) {return x<y?x:y;}
inline int max(int x, int y) {return x>y?x:y;}
inline void dijkstra(); int main()
{
n=getint();
for (int i=;i<=n;i++)
for (int j=;j<i;j++)
{
int A=getint();
if (A>=) link(i, j, A);
}
memset(h, 0x3F, sizeof h); h[]=;
dijkstra(); int ans=;
for (int i=;i<=n;i++) ans=max(ans, h[i]); putint(ans); return ;
}
inline int getint()
{
register int num=;
register char ch=;
do ch=getchar(); while ((ch<'' || ch>'') && ch!='x');
if (ch=='x') return -;
do num=num*+ch-'', ch=getchar(); while (ch>='' && ch<='');
return num;
}
inline void putint(int num)
{
char stack[];
register int top=;
if (num==) stack[top=]='';
for ( ;num;num/=) stack[++top]=num%+'';
for ( ;top;top--) putchar(stack[top]);
putchar('\n');
}
inline void dijkstra()
{
priority_queue q;
q.build(n);
for ( ;q.size; )
{
int u=q.front(); q.pop();
for (edge * i=e[u];i;i=i->next) if (q.exist(i->point) && h[i->point]>h[u]+i->dist)
{
h[i->point]=h[u]+i->dist;
q.deskey(i->point);
}
}
}
本傻装B系列
[poj 1502]昂贵的聘礼的更多相关文章
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
- POJ 1062 昂贵的聘礼(图论,最短路径)
POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...
- POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- poj 1062 昂贵的聘礼 (dijkstra最短路)
题目链接:http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- 最短路POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- POJ 1062 昂贵的聘礼(带限制条件的dijkstra)
题目网址:http://poj.org/problem?id=1062 题目: 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- POJ 1062 昂贵的聘礼 (最短路)
昂贵的聘礼 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/M Description 年轻的探险家来到了一个印第安部落里.在那里 ...
- POJ 1062 昂贵的聘礼(最短路中等题)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 51879 Accepted: 15584 Descripti ...
- POJ -1062 昂贵的聘礼(前向星 && SPFA)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013497151/article/details/30299671 题目链接:id=1062&qu ...
随机推荐
- (原创)IP协议Header部分的Checksum计算方法
- RedHat3.4安装GIT
1.首先到官网上下载git包,地址为http://git-scm.com/download 注意:选择下载Older releases 2.输入命令tar zxvf git-1.7.9.4.tat.g ...
- fifter常见的运用场景
没配置过滤器 package servlet; import java.io.IOException; import javax.servlet.ServletException; import ja ...
- iOS AFNetworking中cookie的读取与设置
参考: http://blog.csdn.net/zhaoxy_thu/article/details/20532879 实际上AFNetworking中并没有专门针对cookie封装的代码,但是由于 ...
- python 发送邮件实例
留言板回复作者邮件提醒 -----------2016-5-11 15:03:58-- source:python发送邮件实例
- spring,maven,dubbo配置
首先我写的这个不是介绍原理的东西,只是指明在我在使用的过程中遇见的一些疑惑的,最后我的理解,你要看详细的配置的话可以看网上的,这个一大堆的.其实dubbo的原理从模型上来看是很简单的东西,完全可以把这 ...
- git ignore 添加忽略文件不生效解决办法
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: /targ ...
- [SoapUI] SoapUI JDBC REST 连接 Netezza
How to Connect to Server 1. Apply accounts that has permission to access Netezza system for host acc ...
- .net 连接数据库
"@"符号是防止将后面字符串中的"\"解析为转义字符. using System.Data; using System.Data.SqlClient; ... ...
- 【转】数据预处理之独热编码(One-Hot Encoding)
原文链接:http://blog.csdn.net/dulingtingzi/article/details/51374487 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. ...