P4542 [ZJOI2011]营救皮卡丘

乍一看似乎没啥题相似的
仔细一看,$N<=150$
边又是双向边,似乎可以用Floyd搞
 
先跑一遍Floyd处理出$dis[i][j]$
注意到走据点要先走小的才能走大的
也就是说,$i<j<k$时,$dis[i][j]$不能从$k$转移过来
并且实际走路径时,编号也必须从小到大
 
于是题目转化成了:
给定序列$0,1,2,3,.....,n-1,n$,给出每两个数字之间的转移代价$dis[i][j](i<j)$,
用$k$条从0开始的子序列覆盖整条序列的最小代价,且每个数(除0外)恰好被覆盖一次。(你闲着没事走两次干啥)
有没有可能$i$到$j$的最优路径中间经过$k$,使$k$被覆盖2次?不会,因为在Floyd中已经处理掉了。
 
卧槽这不是P2469 [SDOI2010]星际竞速吗!
于是就转化为一个最小路径覆盖问题写辣
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define N 505
#define M 200005
int n,m,k,S,T0,T,tC,dis[N][N],d[N],a[N],p[N];
queue <int> h; bool inh[N];
int cnt=,hd[N],nxt[M],ed[N],poi[M],val[M],cst[M];
inline void adde(int x,int y,int v1,int v2){
nxt[ed[x]]=++cnt, hd[x]=hd[x]?hd[x]:cnt,
ed[x]=cnt, poi[cnt]=y, val[cnt]=v1, cst[cnt]=v2;
}
inline void link(int x,int y,int v1,int v2){adde(x,y,v1,v2),adde(y,x,,-v2);}
bool bfs(){
memset(d,,sizeof(d)); int Inf=d[];
h.push(S); inh[S]=; a[S]=Inf; d[S]=;
while(!h.empty()){
int x=h.front(); h.pop(); inh[x]=;
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(val[i]>&&d[to]>d[x]+cst[i]){
d[to]=d[x]+cst[i]; p[to]=i;
a[to]=min(a[x],val[i]);
if(!inh[to]) h.push(to),inh[to]=;
}
}
}if(d[T]==Inf) return ;
tC+=a[T]*d[T];
for(int i=T;i!=S;i=poi[p[i]^])
val[p[i]]-=a[T],val[p[i]^]+=a[T];
return ;
}
void Floyd(){
memset(dis,,sizeof(dis));
for(int i=;i<=n;++i) dis[i][i]=;
for(int i=,u,v,w;i<=m;++i){
scanf("%d%d%d",&u,&v,&w);
dis[u][v]=dis[v][u]=min(dis[v][u],w);
}
for(int k=;k<=n;++k)
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
if(k<=i||k<=j)//不能从大的转移回来
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
int main(){
scanf("%d%d%d",&n,&m,&k); Floyd();
S=n*+; T=S+;
for(int i=;i<=n;++i)
link(S,i,,),link(i+n+,T,,);
link(S,,k,);//最大流量限制为k
for(int i=;i<=n;++i)
for(int j=i+;j<=n;++j)
link(i,j+n+,,dis[i][j]);
while(bfs());
printf("%d",tC);
return ;
}

P4542 [ZJOI2011]营救皮卡丘(Floyd+网络流)的更多相关文章

  1. 【BZOJ2324】[ZJOI2011]营救皮卡丘(网络流,费用流)

    [BZOJ2324][ZJOI2011]营救皮卡丘(网络流,费用流) 题面 BZOJ 洛谷 题解 如果考虑每个人走的路径,就会很麻烦. 转过来考虑每个人破坏的点集,这样子每个人可以得到一个上升的序列. ...

  2. BZOJ 2324: [ZJOI2011]营救皮卡丘( floyd + 费用流 )

    昨晚写的题...补发一下题解... 把1~N每个点拆成xi, yi 2个. 预处理i->j经过编号不超过max(i,j)的最短路(floyd) S->0(K, 0), S->xi(1 ...

  3. 洛咕P4542 [ZJOI2011]营救皮卡丘

    套路题? 感觉讲不清,先写建图 把每个点拆成两个,A和B, S->Ai流量=1费用=0,Bi->T流量=1费用=0, Ai->Bj流量=1费用=ij最短路 还有一个特殊的s点,S-& ...

  4. P4542 [ZJOI2011]营救皮卡丘

    题目链接 题意分析 我们仔细分析一下 发现题目要求用最多\(k\)条路径实现最小权覆盖 首先由于最小路径覆盖针对的是有向图 但是这是一个无向图 所以我们面向对象编程 我们维护一个数组\(d[i][j] ...

  5. bzoj 2324 [ZJOI2011]营救皮卡丘(floyd,费用流)

    2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1777  Solved: 712[Submit][Stat ...

  6. 【BZOJ2324】[ZJOI2011]营救皮卡丘 有上下界费用流

    [BZOJ2324][ZJOI2011]营救皮卡丘 Description 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的 ...

  7. bzoj2324 [ZJOI2011]营救皮卡丘 费用流

    [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2653  Solved: 1101[Submit][Status][D ...

  8. BZOJ2324: [ZJOI2011]营救皮卡丘

    2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1359  Solved: 522[Submit][Stat ...

  9. 【bzoj2324】[ZJOI2011]营救皮卡丘 最短路-Floyd+有上下界费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6832504.html 题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘 ...

随机推荐

  1. 【转】SPI FLASH与NOR FLASH的区别 详解SPI FLASH与NOR FLASH的不一样

    转自:http://m.elecfans.com/article/778203.html 本文主要是关于SPI FLASH与NOR FLASH的相关介绍,并着重对SPI FLASH与NOR FLASH ...

  2. [python 学习]正则表达式

    re 模块函数re 模块函数和正则表达式对象的方法match(pattern,string,flags=0) 尝试使用带有可选的标记的正则表达式的模式来匹配字符串.如果匹配成功,就返回匹配对象:如果失 ...

  3. vue 自定义封装组件 使用 model 选项

    自定义组件的 v-model 一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框.复选框等类型的输入控件可能会将 value 特性用于不同 ...

  4. CSS--使用CSS Grid(网格)布局

    .一 CSS Grid(网格布局)简介 CSS Grid 布局由两个核心组成部分是父元素和子元素,父元素 是实际的 grid(网格),子元素是 grid(网格) 内的内容.下面是一个父元素和六个子元素 ...

  5. flask之显示当地时间

    一:在网页上显示时间 flask-moment 程序扩展可以实现 pip install flask-moment # 未完待续

  6. pandas学习(一)

    pandas.DataFrame.sort_index 用法 sort_index(axis=0, level=None, ascending=True, inplace=False, kind='q ...

  7. Dubbo学习-2-注册中心搭建

    1.Dubbo支持如下几种注册中心,推荐使用zookeeper来作为注册中心. 2. 下载zookeeper https://zookeeper.apache.org/releases.html#do ...

  8. 图片没有.png或者jpg后缀能不能加载?

    是可以的,如:http://mmbiz.qpic.cn/mmbiz_png/MW1VecOrnw6HUMvEUNUxibLVtbY2vHF8QkFyviaickh8pnsapQ8gOosdq13SBX ...

  9. php strrchr()函数 语法

    php strrchr()函数 语法 作用:返回一个字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符.大理石平台哪家好 语法:strrchr(string,char) 参 ...

  10. asp.net选择文件夹上传

    HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...