bzoj3040
题解:
模板题,地界特斯拉+堆优化
注意第一种建边
代码:
#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的更多相关文章
- BZOJ3040:最短路——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3040 题意rt,使用pb_ds的堆解决本问题. 所以其实就是mark一下的. 不过有人确认过官方不 ...
- BZOJ3040 最短路(road)
题意 N个点,M条边的有向图,求点1到点N的最短路(保证存在). \(1 \leq N \leq 1000000,1 \leq M \leq 10000000\) 前T条边采用如下方式生成: 初始化x ...
- BZOJ-3040 最短路
最短路+堆优化. 普通的堆还不行,自己用的是配对堆(貌似斐波那契堆也行?毕竟理论复杂度) 然后发现自己的配对堆比云神的不知快了多少...我照着他的模版打的喂.. 然后发现前T条边不理都能A... 数据 ...
- 【BZOJ】BZOJ3040 最短路 线段树优化Dijkstra
题目描述 N个点,M条边的有向图,求点1到点N的最短路(保证存在). 1<=N<=1000000,1<=M<=10000000 输入格式 第一行两个整数N.M,表示点数和边数. ...
- pb_ds(平板电视)整理
有人说BZOJ3040用普通的<queue>中priority_queue搞dijkstra过不了. 我只想说你们的djk可能写的太丑了. 先上代码 #include<iostrea ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- BZOJ刷题列表【转载于hzwer】
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...
随机推荐
- C# 判断网络文件是否存在
#region 判断网络文件是否存在 //bool result = false;//下载结果 //string fileUrl = "http://localhost:7070/FileU ...
- Python3基础 sys.path.append 增加模块的搜索路径
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Ubuntu 14.04 安装adobe flash player
参考: How to install flash payer in Ubuntu 14.04 LTS? [duplicate] Ubuntu 14.04 安装adobe flash player 32 ...
- Ubuntu 14.04 删除软件附加依赖
参考:FlowVisor的学习笔记 eg.mininet $ sudo apt-get remove mininet $ sudo apt-get remove --auto-remove minin ...
- 使用caffenet微调时的一些总结
1,比较笨的方法生成图片列表(两类举例)data/myself/train 目录下 find -name cat.\*.jpg |cut -d '/' -f2-3 >train.txtsed - ...
- 【bzoj】2733: [HNOI2012]永无乡
Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...
- MongoDB(课时14 正则运算)
3.2.4.9 正则运算 如果想实现模糊查询,必须使用正则表达式,而且正则表达式使用的语言是Perl兼容的正则表达式的形式. 要实现正则使用,则按照如下的定义格式: 基础语法:{key : 正则标记} ...
- Android 实现文件上传功能(upload)
文 件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的.下面是一个模拟网站程 序上传文件的例子.这里只写出了Android部分的 ...
- Codeforces 832D - Misha, Grisha and Underground
832D - Misha, Grisha and Underground 思路:lca,求两个最短路的公共长度.公共长度公式为(d(a,b)+d(b,c)-d(a,c))/2. 代码: #includ ...
- export与export default exports与module.exports的用法
转载:http://blog.csdn.net/zhou_xiao_cheng/article/details/52759632 本文原创地址链接:http://blog.csdn.net/zhou_ ...