usaco 奶牛接力
Description
为增强体质,约翰决定举办一场奶牛接力跑比赛。比赛现场有一些接力位置,这些位置间有T条路连接,第i条路的长度为Li。 有N头奶牛需要参加比赛,领头的奶牛从位置S出发,她会按照你的指示沿着一条路跑到下个位置,把接力棒交给等在那里的下一头奶牛,就休息去了。每头奶牛重复这个过程这条接力路线的终点必须在位置E上。
奶牛数量较多,允许一些奶牛等候在同一位置,一条路也可以供多头奶牛奔跑。 奶牛们对接力跑兴趣不大,拜托你敷衍地设计一条总长度最短的路线。所以请设计一条由N段路组成的,起点在S,终点在E上的最短路线吧。
Input Format
第一行:四个用空格分开的整数:表示N,T,S和E,2 ≤ N ≤ 106,2 ≤ T ≤ 100,1 ≤ S, E ≤ 1000
第二行到T + 1行: 第i + 1行首先有一个正整数Li,表示第i条路的长度, 1 ≤ Li ≤ 1000,其次是Ui和Vi,表示第i条路连接的两个位置,1 ≤ Ui, Vi ≤ 1000
Output Format
第一行:单个整数,表示起点为S,终点为E,且恰好经过N段路的最短路线长度
------------------------------------------------------
正解 = 最短路+倍增+(貌似有个很傻的离散- =)
注意道题目中的 N 比较大,T却很小- =,
由于 Ui 与 Vi 的范围比 T 还大,显然中间有许多无用的点
离散之,
注意道题目中的 N 比较大,T却很小- =,
这说明一个点会被经过多次(显然),
原本最短路只能得到任意两点 i,j 的距离dis[i][j],
在这个基础上加一维 dis[i][j][k] 表示 i 到 j 且经过2k条路径的最短路径,
转移于folyed有些类似 dis[i][j][k]=dis[i][p][k-1]+dis[p][j][k-1](p为图中的点)
将 N 转为2进制 设为 T2,设f[i][j]为 从起点S 到 i 这个点经过了 (T2从左往右数j个1达到的值)条路径
f[i][j]=f[k][j-1]+dis[i][k][p](k为图中点)(p为 2^p)
f[终点][T2 中 1 的个数]即为所求答案- =
Ps.好吧,我承认我表达能力挺拙计的- =
代码如下:
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<string>
#include<iostream>
#include<queue>
#define INF 999999999
#define min(x,y) if(x>y||x==-1) x=y
int P,dis[][][],f[][],N,T,S,E;
int O, ok[];
void Do(){
for(int p=;(<<p)<=N;p++)
for(int i=;i<=O;i++)
for(int j=;j<=O;j++)
for(int k=;k<=O;k++)
if(dis[i][j][p]>dis[i][k][p-]+dis[k][j][p-])
dis[i][j][p]=dis[i][k][p-]+dis[k][j][p-];
}
void Dp(){
for(int i=;i<=;i++)
for(int k=;k<=;k++)
f[i][k]=INF;
f[ok[S]][]=;
int k=,p=;
while(N){
if(N&){
++k;
for(int i=;i<=O;i++)
for(int j=;j<=O;j++)
if(f[i][k]>f[j][k-]+dis[i][j][p])
f[i][k]=f[j][k-]+dis[i][j][p];
}
N>>=;
++p;
}
printf("%d",f[ok[E]][k]);
}
int main(){
scanf("%d%d%d%d",&N,&T,&S,&E);
for(int i=;i<=;i++)
for(int j=;j<=;j++)
for(int k=;k<=;k++)
dis[i][j][k]=INF;
for(int i=;i<=T;i++){
int u,v,t;
scanf("%d%d%d",&t,&u,&v);
if(!ok[u]) ok[u]=++O;
if(!ok[v]) ok[v]=++O;
dis[ok[u]][ok[v]][]=dis[ok[v]][ok[u]][]=t;
}
Do();
Dp();
}
usaco 奶牛接力的更多相关文章
- 【BZOJ】【1046】/【POJ】【3613】【USACO 2007 Nov】Cow Relays 奶牛接力跑
倍增+Floyd 题解:http://www.cnblogs.com/lmnx/archive/2012/05/03/2481217.html 神题啊= =Floyd真是博大精深…… 题目大意为求S到 ...
- BZOJ_[usaco2007 Nov]relays 奶牛接力跑_离散化+倍增弗洛伊德
BZOJ_[usaco2007 Nov]relays 奶牛接力跑_离散化+倍增弗洛伊德 Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们 ...
- 【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑 矩阵乘法
[BZOJ1706][usaco2007 Nov]relays 奶牛接力跑 Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项 ...
- USACO 奶牛抗议 Generic Cow Protests
USACO 奶牛抗议 Generic Cow Protests Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望 ...
- [USACO]奶牛会展(背包)
[USACO]奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览. ...
- 「题解」:[线性代数]:relays 奶牛接力跑
问题: relays 奶牛接力跑 时间限制: 1 Sec 内存限制: 256 MB 题面 题目描述 FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼 ...
- BZOJ 1706: [usaco2007 Nov]relays 奶牛接力跑
Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T < ...
- bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑——倍增floyd
Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T < ...
- 【bzoj1706】[usaco2007 Nov]relays 奶牛接力跑 离散化+倍增Floyd
题目描述 FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T <= 100) ...
随机推荐
- centOS 6.4 vsftpd 500 illegal port command
原先配置好的vsftpd突然不行了,不知为啥,感觉跟网络有关,这个网络总是有dns拦截的现象,..小公司.真烦人,用联通线路就没问题, 但同事就是连不上,我的笔记本却可以连接上..我的ubuntn,同 ...
- margin系列之内秀篇
本系列摘自 飘零雾雨的博客 最Cool的利器 一样东西在不同的场景,不同的人手里,所能做的事会有很大不同.我深切的以为 margin 绝对是 CSS 中最有能力的利器之一,不知大家以为然否? 前面几 ...
- hadoop1——map到reduce中间的shuffle过程
---恢复内容开始--- shuffle和排序 过程图如下: MapReduce确保每个reduce的输入都按键排序,系统执行排序的过程——将map输出作为输入传给reduce——成为shuffle, ...
- #Leet Code# Evaluate Reverse Polish Notation
描述:计算逆波兰表达法的结果 Sample: [", "*"] -> ((2 + 1) * 3) -> 9 [", "/", & ...
- [转]EJS入门
今天学习了EJS,转个再点个赞,动态创网页的好方法! 主页:http://www.embeddedjs.com/ 转自:http://www.csser.com/board/4fddc4f0b28ed ...
- C# 在SQLite数据库中存储图像 z
C# 在SQLite数据库中存储图像 更多 0 C# SQLite 建表语句 CREATE TABLE [ImageStore]([ImageStore_Id] INTEGER NOT NULL ...
- asp.net管道模型
查了很多资料,终于大概弄懂管道模型(注意并非指定是asp.net范畴)是个什么概念了,其实就是从Unix移植过来的一种概念,也可以说是一种模式吧(只允许一头读,一头写,并且读完了就会自动消失). as ...
- SQL Server 2008 R2 主从数据库同步设置
一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2 DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...
- Socket实现简单的聊天通信
最近学习了Socket后,感觉Socket挺好玩的,在博客中看到socket在实时聊天功能的很强大,于是乎就做了一个简单的聊天功能,今天贴出来,能够与大家一起共享,有不对之处,能够给予指出,谢谢! 服 ...
- JavaScript自学代码--(三)
//通过 id 查找 HTML 元素 var x = document.getElementById("demo"); //通过标签名查找 HTML 元素 //本例查找 id=&q ...