题解:

模板题,地界特斯拉+堆优化

注意第一种建边

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+,M=1e7+;
ll dis[N];
int a1,b1,c3,a,b,c,a2,b2,a3,b3,T,n,m,num,l;
int fi[N],zz[M],sl[M],ne[M],f[N],q[N],p;
void jb(int x,int y,int z)
{
ne[++num]=fi[x];
fi[x]=num;
zz[num]=y;
sl[num]=z;
}
void up(int x)
{
if (x==)return;
if (dis[f[x]]<dis[f[x/]])
{
swap(f[x],f[x/]);
swap(q[f[x]],q[f[x/]]);
up(x/);
}
}
void down(int x)
{
int i=x;
if (x*<=l&&dis[f[i]]>dis[f[x*]])i=x*;
if (x*<l&&dis[f[i]]>dis[f[x*+]])i=x*+;
if (i!=x)
{
swap(f[x],f[i]);
swap(q[f[x]],q[f[i]]);
down(i);
}
}
int main()
{
scanf("%d%d",&n,&m);
scanf("%d%d%d%d%d%d",&T,&a1,&a2,&b1,&b2,&p);
m-=T;
while (T--)
{
a=(ll)((ll)a*a1+a2)%p;
b=(ll)((ll)b*b1+b2)%p;
a3=min(a%n+,b%n+);
b3=max(a%n+,b%n+);
c3=1e8-a3;
jb(a3,b3,c3);
}
while (m--)
{
scanf("%d%d%d",&a3,&b3,&c3);
jb(a3,b3,c3);
}
memset(dis,0x3f3f3f3f,sizeof dis);
dis[]=;
for (int i=;i<=n;i++)f[i]=q[i]=i;
l=n;
for (int i=;i<=n;i++)
{
int k=f[];
if (k==n)break;
q[f[l]]=;
f[]=f[l--];
down();
for (int j=fi[k];j;j=ne[j])
if (dis[zz[j]]>dis[k]+sl[j])
{
dis[zz[j]]=dis[k]+sl[j];
up(q[zz[j]]);
}
}
printf("%lld",dis[n]);
}

bzoj3040的更多相关文章

  1. BZOJ3040:最短路——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3040 题意rt,使用pb_ds的堆解决本问题. 所以其实就是mark一下的. 不过有人确认过官方不 ...

  2. BZOJ3040 最短路(road)

    题意 N个点,M条边的有向图,求点1到点N的最短路(保证存在). \(1 \leq N \leq 1000000,1 \leq M \leq 10000000\) 前T条边采用如下方式生成: 初始化x ...

  3. BZOJ-3040 最短路

    最短路+堆优化. 普通的堆还不行,自己用的是配对堆(貌似斐波那契堆也行?毕竟理论复杂度) 然后发现自己的配对堆比云神的不知快了多少...我照着他的模版打的喂.. 然后发现前T条边不理都能A... 数据 ...

  4. 【BZOJ】BZOJ3040 最短路 线段树优化Dijkstra

    题目描述 N个点,M条边的有向图,求点1到点N的最短路(保证存在). 1<=N<=1000000,1<=M<=10000000 输入格式 第一行两个整数N.M,表示点数和边数. ...

  5. pb_ds(平板电视)整理

    有人说BZOJ3040用普通的<queue>中priority_queue搞dijkstra过不了. 我只想说你们的djk可能写的太丑了. 先上代码 #include<iostrea ...

  6. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  7. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

随机推荐

  1. 自动化测试框架Cucumber和RobotFramework的实战对比

    转自: http://www.infoq.com/cn/articles/cucumber-robotframework-comparison   一.摘要 自动化测试可以快速自动完成大量测试用例,节 ...

  2. BeyondCompare

    BeyondCompare可对文本,照片,文件夹,注册表等等进行比较 在git看不清楚版本和改动项的时候,直接将生产上的包拉下来和即将发布的包,作对比.

  3. 大数据存储的进化史 --从 RAID 到 Hdfs

    我们都知道现在大数据存储用的基本都是 Hdfs ,但在 Hadoop 诞生之前,我们都是如何存储大量数据的呢?这次我们不聊技术架构什么的,而是从技术演化的角度来看看 Hadoop Hdfs. 我们先来 ...

  4. node 工程化 web项目

    1.结构 node_modules   ( ... ) routers     ( main.js  ) views    ( index.html   about.HTML  404.html ) ...

  5. shuoj 418 丢史蒂芬妮(素数筛+sg函数)

    丢史蒂芬妮 代码: #include<bits/stdc++.h> using namespace std; +; int SG[N][N]; bool S[N]; vector<i ...

  6. Unity另外一套简单日志控制系统

    using UnityEngine; public class LogPrintf { static LogLevel logLevel = LogLevel.LOG_LEVEL_ERROR; pub ...

  7. Java使用Log4记录日志

    我们在系统使用中,为了方便查找问题,因此需要记录操作的日志,而目前比较成熟稳定的程序日志记录方式就是Log4,本人也是菜鸟,然后再学习研究中就记录一下使用方式,以方便今后查阅,同时本文章参考了博客园: ...

  8. Ivan and Burgers CodeForces - 1100F (线性基)

    大意: 给定n元素序列, m个询问$(l,r)$, 求$[l,r]$中选出任意数异或后的最大值 线性基沙茶题, 直接线段树暴力维护两个log还是能过的 #include <iostream> ...

  9. laravel 异常深度解析

    一.前言 做一件事,不仅要知其然,更要知其所以然.大部分的人都生活在别人设计的世界里,不是没有能力去更深一层,更进一步,而是因为自己懒得去思考.也许自己现在要做的就是:不要让自己舒服吧. 二.正题 1 ...

  10. 『PyTorch』第三弹重置_Variable对象

    『PyTorch』第三弹_自动求导 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Varibale包含三个属性: data ...