题解:

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

注意第一种建边

代码:

#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. openwrt如何单独编译uboot

    答:make package/boot/uboot-<chip series>/compile

  2. luogu4473 BZOJ2143 2011[国家集训队]飞飞侠

    题目戳这里 有问题可以在博客@ 应该还会有人来看吧,嘻嘻 正题: 题目大意: 题目很清楚,就是一个点有一定的范围,会有一定的花费 求三个点中的任意两个点到另一个点的最小花费 (麻麻教育我千万读好题目( ...

  3. <OFFER> 06_PrintListInReversedOrder

    #include<stack> #include "List.h" void PrintListReversingly_Iteratively(ListNode* pH ...

  4. Codeforces Round #530 (Div. 1)

    A - Sum in the tree 就是贪心选尽量让上面的点权尽量大,那么对于偶数层的点,其到根节点的和即为所有儿子中的最大值. #include<bits/stdc++.h> usi ...

  5. [SpringBoot] - 一份笔记

    一. Spring Boot 入门 1. Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2. 微服务 201 ...

  6. 联想笔记本thinkpad按F2不能直接重命名

    联想笔记本thinkpad按F2不能直接重命名,而是Fn+F2. 解决: 按一下Fn+Esc(一般在左上角)

  7. 03_Kafka集群操作

    1.集群配置思路 1)每台节点上要启动一个broker进程,因此要配置每台的server.properties broker id, log.dirs, zookeeper.connect 2) 每台 ...

  8. spring boot 无法读取application.properties问题

    spring boot 无法读取application.properties问题 https://bbs.csdn.net/topics/392374488 Spring Boot 之注解@Compo ...

  9. python 进程队列

    #_*_coding:utf-8_*_ from multiprocessing import Process,Queue import os,time def f(q,n): q.put([n,'h ...

  10. WCF 客户端调用服务操作的两种方法

    本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: usi ...