我们枚举每一条边的流量x,将它作为底流(也就是比它大的的流量变成差值,比它小的流量为0),然后我们设x就是路径上第K大的那个边的流量。然后跑最短路,加上dis[n]就是当前的答案。然后取min即可。

算法时间复杂度\(O(n^2logn)\)

为什么这样子就是最小的呢?????我也很懵逼啊

因为你考虑ans_x是第K大的流量,设当前处理的为x。

如果按照上述规定来跑最短路,显然上述所求最短路加上K*ans_x就是答案,而且这个最短路径是一定确定的。下面我们就要求ans_x——如果我们进行遍历然后取min的话,如果保证x!=ans_x的时候不优呢?

如果x比ans_x小,那么“还有流量”的边一定大于等于K。这样的话最后统计答案最短路会长,x变小——但是变化幅度没有前面的大,所以不优。

如果x比ans_x大,那么“还有流量”的边一定小于等于K。这样的话最后统计答案最短路会短,x变大——但是变化幅度比前面的大,所以不优。

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#define MAXN 5010
using namespace std;
int n,m,t,k;
int head[MAXN],done[MAXN];
long long ans=(long long)1e15;
long long dis[MAXN];
vector<int>vec;
struct Edge{int nxt,to,dis;}edge[MAXN<<1];
struct Node
{
int u;
long long w;
friend bool operator < (struct Node x,struct Node y)
{return x.w>y.w;}
};
inline void add(int from,int to,int dis)
{
edge[++t].nxt=head[from];
edge[t].to=to;
edge[t].dis=dis;
head[from]=t;
}
inline long long dij(int x)
{
priority_queue<Node>q;
for(int i=0;i<=n;i++) dis[i]=(long long)1e15,done[i]=0;
q.push((Node){1,0}); dis[1]=0;
while(!q.empty())
{
int u=q.top().u; q.pop();
if(done[u]) continue;
done[u]=1;
for(int i=head[u];i;i=edge[i].nxt)
{
int v=edge[i].to;
long long w=max(edge[i].dis-x,0);
//printf("v=%d w=%lld %lld\n",v,w,edge[i].dis);
if(dis[u]+w<dis[v])
dis[v]=dis[u]+w,q.push((Node){v,dis[v]});
}
}
return dis[n];
}
int main()
{
//freopen("skd.in","r",stdin);
//freopen("skd.out","w",stdout);
freopen("ce.in","r",stdin);
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w),add(v,u,w);
vec.push_back(w);
}
ans=dij(0);
printf("%lld\n",ans);
for(int i=0;i<vec.size();i++)
ans=min(ans,1ll*vec[i]*k+dij(vec[i])),printf("%lld\n",ans);
printf("%lld\n",ans);
return 0;
}

赛肯德 | 2017NEERC某题的更多相关文章

  1. Kendall Rank(肯德尔等级)相关系数

    1.简介在统计学中,肯德尔相关系数是以Maurice Kendall命名的,并经常用希腊字母τ(tau)表示其值.肯德尔相关系数是一个用来测量两个随机变量相关性的统计值.一个肯德尔检验是一个无参数假设 ...

  2. Kendall's tau-b(肯德尔)等级相关系数

    Kendall's tau-b(肯德尔)等级相关系数:用于反映分类变量相关性的指标,适用于两个分类变量均为有序分类的情况.对相关的有序变量进行非参数相关检验:取值范围在-1-1之间,此检验适合于正方形 ...

  3. 团体程序设计天梯赛-练习集L1-014. 简单题

    L1-014. 简单题 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 这次真的没骗你 —— 这道超级简单的题目没有任何输入. ...

  4. 省选训练赛第4场D题(多米诺骨牌)

    题目来自FZU2163 多米诺骨牌 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Vasya很喜欢排多米诺 ...

  5. 2019浙大校赛--G--Postman(简单思维题)

    一个思维水题 题目大意为,一个邮递员要投递N封信,一次从邮局来回只能投递K封.求最短的投递总距离.需注意,最后一次投递后无需返回邮局. 本题思路要点: 1.最后一次投递无需返回邮局,故最后一次投递所行 ...

  6. hash(2018年CSUST省赛选拔赛第一场B题+hash+字典树)

    题目链接:http://csustacm.com:4803/problem/1006 题目: 思路:正如题目一样,本题是一个hash,比赛的时候用的字典树,但是不知道为什么一直RE(听学长说要动态开点 ...

  7. HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...

  8. 第七届蓝桥杯省赛javaB组 第七题剪邮票

    剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连)比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是合格的 ...

  9. 2019浙大校赛--E--Potion(签到水题)

    一丢丢思维就ok 题目大意: 魔法师要煮药,有n个等级的药,所需要的药物为a1,a2...an,意为第n级需要多少药物,下一行为库存的不同等级药物,药物可降级使用不可升级. 思路:从高级药物开始解,把 ...

随机推荐

  1. 温故而知新-XML和WEB服务器

    1 xml除了空元素外都是有开始标记和结束标记的 2 XML可以设置自己的标记

  2. django中文件下载(HttpResponse)

    最近一个用django开发的web项目要进行数据的导入导出,所以有必要了解下. django中主要用HttpResponse将请求结果返回给浏览器,所以文件的下载也是通过改对象进行处理的,具体的一个列 ...

  3. css常用属性总结:背景background上篇

    1.在前面一节中我们提到了color的使用,类似于前景色,我们同样可以为元素的背景声明颜色,可以使用background-color属性, 它接受任何有效的颜色值.先看看它的语法. backgroun ...

  4. shell中的字符串操作和数学运算

    字符串操作   变量赋值: 说明:变量值可以用单引号.双引号.或者不加任何引号来赋值给变量 变量名="变量值" 变量名='变量值' 变量名=变量值 例如:str="hel ...

  5. 南京大学发布无序列限制的DNA编辑新工具(转自生物通)

    编辑推荐: 内切酶经过改造可以成为强大的DNA编辑工具,比如ZFN.TALEN.风头正劲的CRISPR–Cas系统和充满争议的NgAgo技术.不过这些技术都是通过序列识别来实现靶向切割的,会受到序列偏 ...

  6. 23.Merge k Sorted Lists (Array, Queue; Sort)

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思 ...

  7. for 续2

    --------siwuxie095             (二)skip=n 忽略(屏蔽.隐藏)文本前 N 行的内容. (N 必须大于 0,不能等于 0)     格式: FOR /F " ...

  8. 轻轻松松 用U盘安装WIN7

    详细图解请猛击这里:http://www.docin.com/p-624698990.html一. 制作驱动U盘1. 先下载WIN7原版盒装安装盘镜像先下载软件2. 然后下载UltraISO PE 9 ...

  9. Mac 搭建达尔文流媒体服务器

    Darwin Streaming Server简称DSS.DSS是Apple公司提供的开源实时流媒体播放服务器程序. 1.下载安装 官网地址:http://dss.macosforge.org/ Ma ...

  10. 一些json在js和c++ jsoncpp的操作

    1.对于javascript部分,如果将字符串转为json对象? var aa ={ keyword:"zoumm", requestcount:"5", ne ...