http://www.lydsy.com/JudgeOnline/problem.php?id=3445

加倍的边一定在最短路上(否则继续走最短路)。

最短路长度是O(n)的,暴力扫最短路上的每条边,再暴力dijkstra,时间复杂度\(O(n^3)\)。

话说堆优dij的复杂度到底多少?\(O((n+m)logn)\)?\(O(nlogn+m)\)?

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 253; int a[N][N], n, m, now, pre[N];
ll dist[N], shortest, t;
bool vis[N]; int main() {
int u, v, e;
memset(a, -1, sizeof(a));
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; ++i) {
scanf("%d%d%d", &u, &v, &e);
a[u][v] = a[v][u] = e;
} memset(dist, 127, sizeof(ll) * (n + 1));
dist[1] = 0;
for (int i = 1; i <= n; ++i) {
now = -1;
for (int j = 1; j <= n; ++j)
if (!vis[j] && ((dist[j] < dist[now]) || (now == -1)))
now = j;
if (now == -1) break;
for (int j = 1; j <= n; ++j)
if (!vis[j] && a[now][j] != -1 && (t = (dist[now] + a[now][j])) < dist[j]) {
dist[j] = t;
pre[j] = now;
}
vis[now] = true;
} shortest = dist[n];
int tmp = n; ll ans = shortest;
while (tmp != 1) {
a[pre[tmp]][tmp] <<= 1;
a[tmp][pre[tmp]] <<= 1; memset(dist, 127, sizeof(ll) * (n + 1));
memset(vis, 0, sizeof(bool) * (n + 1));
dist[1] = 0;
for (int i = 1; i <= n; ++i) {
now = -1;
for (int j = 1; j <= n; ++j)
if (!vis[j] && ((dist[j] < dist[now]) || (now == -1)))
now = j;
if (now == -1) break;
for (int j = 1; j <= n; ++j)
if (!vis[j] && a[now][j] != -1 && (t = (dist[now] + a[now][j])) < dist[j])
dist[j] = t;
vis[now] = true;
} ans = max(ans, dist[n]);
a[pre[tmp]][tmp] >>= 1;
a[tmp][pre[tmp]] >>= 1;
tmp = pre[tmp];
} printf("%lld\n", ans - shortest);
return 0;
}

【BZOJ 3445】【Usaco2014 Feb】Roadblock的更多相关文章

  1. 【BZOJ】3052: [wc2013]糖果公园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...

  2. 【BZOJ】3319: 黑白树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...

  3. 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...

  4. 【BZOJ】【2084】【POI2010】Antisymmetry

    Manacher算法 啊……Manacher修改一下就好啦~蛮水的…… Manacher原本是找首尾相同的子串,即回文串,我们这里是要找对应位置不同的“反回文串”(反对称?233) 长度为奇数的肯定不 ...

  5. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere

    [BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...

  6. 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...

  7. 【BZOJ】【3083】遥远的国度

    树链剖分/dfs序 其实过了[BZOJ][4034][HAOI2015]T2以后就好搞了…… 链修改+子树查询+换根 其实静态树的换根直接树链剖分就可以搞了…… 因为其实只有一样变了:子树 如果roo ...

  8. 【BZOJ】【2434】【NOI2011】阿狸的打字机

    AC自动机+DFS序+BIT 好题啊……orz PoPoQQQ 大爷 一道相似的题目:[BZOJ][3172][TJOI2013]单词 那道题也是在fail树上数有多少个点,只不过这题是在x的fail ...

  9. 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法

    整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...

随机推荐

  1. C# - 多线程 之 锁系统

    lock 关键字, Monitor 监控器, using System.Threading: // 提供同步访问对象的机制. public static class Monitor { public ...

  2. 【转】将grub2安装到u盘的方法

    将grub2安装到u盘的方法 时间:2015-03-21来源:linux网站 作者:linux人 grub2在各大linux发行版中广泛采用,它非常强大,基本上大多数操作系统都是通过它引导起来的,它的 ...

  3. enote笔记语言(2)

    why not(whyn't)                 为什么不(与“why”相对应,是它的反面)   how对策 how设计     key-memo                    ...

  4. 如何在Windows Server 2008 R2 SP1安装Redis-x64-3.2.100,并且自动注册服务

    1.官网:http://redis.io/ 2.下载地址:https://github.com/MSOpenTech/redis/releases 3.最新的安装包: 4.点击msi文件开始安装. 5 ...

  5. 关于IOS中safari下的select下拉菜单,文字过长不换行的问题

    今天遇到下图这种问题,文字过长,显示不全.折腾了老半天,在网上搜了半天也找不到解决方案. 于是问了下同事,同事提到了<optgroup>,这个标签厉害. <optgroup> ...

  6. Android 自定义控件之继承ViewGroup创建新容器

    欢迎大家来学习本节内容,前几节我们已经学习了其他几种自定义控件,分别是Andriod 自定义控件之音频条及 Andriod 自定义控件之创建可以复用的组合控件还没有学习的同学请先去学习下,因为本节将使 ...

  7. AngularJS HTML DOM& 事件

    AngularJS 为 HTML DOM 元素的属性提供了绑定应用数据的指令. ng-disabled 指令直接绑定应用程序数据到 HTML 的 disabled 属性 <div ng-app= ...

  8. SQL 数据优化之不建立索引的情况

    索引可以提高数据的检索效率,也可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本.排序分组操作主要消耗的就是CPU资源和内存,所以能够在排序分组操作中好好的利用索引将会极大地降低CPU资源的 ...

  9. C#用链式方法表达循环嵌套

    情节故事得有情节,不喜欢情节的朋友可看第1版代码,然后直接跳至“三.想要链式写法” 一.起缘 故事缘于一位朋友的一道题: 朋友四人玩LOL游戏.第一局,分别选择位置:中单,上单,ADC,辅助:第二局新 ...

  10. 安装.NET Framework进度条卡住不动的解决方案

    VS在安装之前需要安装.NET Framework,我安装的是4.0版本.但是安装进度条到一半左右时就卡住不动了.前前后后重试多次,还有几次重新开机,但都没用. 开始还以为是安装的系统有问题.后来在网 ...