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......)这几天开始会抽时间刷的,每天几道 ...
随机推荐
- 认识电脑的开机流程与主引导分区(MBR)
在前篇随笔中,已经谈到了CMOS与BIOS,CMOS是记录各项硬件参数(包括系统时间.设备的I/O地址.CPU的电压和频率等)且嵌入到主板上面的存储器,BIOS是一个写入到主板上的韧体(韧体是写入到硬 ...
- bootstrap的carousel图片轮播
整个轮播是放在一个div .carousel和.slide的div中的, 包括3个部分: 1. 第一个部分indicator位于下方的指示器部分. 结构是一个ol和li, ol的类是carousel- ...
- spring boot 多数据源分布式事务处理
有参考文章 ,但是自己没有测试.
- POJ 1029 False coin
http://poj.org/problem?id=1029 题意: 在一堆硬币中有一个假硬币,重量是重是轻不知道.每次称量多个硬币,并给出称量结果.判断依据题目给出的几次称量结果能否找出假硬币. 思 ...
- go 变量声明
第一种,指定变量类型,声明后若不赋值,使用默认值. var v_name v_type v_name = value 第二种,根据值自行判定变量类型. var v_name = value 第三种,省 ...
- python 压缩tar 包
import tarfile import os def make_targz(output_filename, source_dir): print("doing!") with ...
- Linux 安装iostat命令
首先跟你的Linux系统有关 我用的是Red hat系统 记录下最快的安装iostat命令的方式 起初想查看iostat, 提示 iostat: command not found 于是,通过yum ...
- [ios]NSThread传值 NSValue传值
NSThread:http://www.cocoachina.com/bbs/read.php?tid=51873 NSValue:http://blog.sina.com.cn/s/blog_bf9 ...
- Bata冲刺 第一天
一.冲刺第一天完成任务情况及贡献小时数: 姓名 今日已完成任务 时间(h) 马仲山 代码调整 2 马婧(12) 整理需求文档 2 马婧(13) 整理设计文档 2 马世芳 编写测试文档 2 张俊逸 ...
- F4+2 团队项目软件设计方案
目录 1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2总体设计 2.1需求规定 2.2运行环境 2.3基本设计概念和处理流程 2.4功能描述 2.5功能器求与程序的关系 2.6人工处 ...