题解:

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

注意第一种建边

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N=1e6+,M=1e7+;
  5. ll dis[N];
  6. int a1,b1,c3,a,b,c,a2,b2,a3,b3,T,n,m,num,l;
  7. int fi[N],zz[M],sl[M],ne[M],f[N],q[N],p;
  8. void jb(int x,int y,int z)
  9. {
  10. ne[++num]=fi[x];
  11. fi[x]=num;
  12. zz[num]=y;
  13. sl[num]=z;
  14. }
  15. void up(int x)
  16. {
  17. if (x==)return;
  18. if (dis[f[x]]<dis[f[x/]])
  19. {
  20. swap(f[x],f[x/]);
  21. swap(q[f[x]],q[f[x/]]);
  22. up(x/);
  23. }
  24. }
  25. void down(int x)
  26. {
  27. int i=x;
  28. if (x*<=l&&dis[f[i]]>dis[f[x*]])i=x*;
  29. if (x*<l&&dis[f[i]]>dis[f[x*+]])i=x*+;
  30. if (i!=x)
  31. {
  32. swap(f[x],f[i]);
  33. swap(q[f[x]],q[f[i]]);
  34. down(i);
  35. }
  36. }
  37. int main()
  38. {
  39. scanf("%d%d",&n,&m);
  40. scanf("%d%d%d%d%d%d",&T,&a1,&a2,&b1,&b2,&p);
  41. m-=T;
  42. while (T--)
  43. {
  44. a=(ll)((ll)a*a1+a2)%p;
  45. b=(ll)((ll)b*b1+b2)%p;
  46. a3=min(a%n+,b%n+);
  47. b3=max(a%n+,b%n+);
  48. c3=1e8-a3;
  49. jb(a3,b3,c3);
  50. }
  51. while (m--)
  52. {
  53. scanf("%d%d%d",&a3,&b3,&c3);
  54. jb(a3,b3,c3);
  55. }
  56. memset(dis,0x3f3f3f3f,sizeof dis);
  57. dis[]=;
  58. for (int i=;i<=n;i++)f[i]=q[i]=i;
  59. l=n;
  60. for (int i=;i<=n;i++)
  61. {
  62. int k=f[];
  63. if (k==n)break;
  64. q[f[l]]=;
  65. f[]=f[l--];
  66. down();
  67. for (int j=fi[k];j;j=ne[j])
  68. if (dis[zz[j]]>dis[k]+sl[j])
  69. {
  70. dis[zz[j]]=dis[k]+sl[j];
  71. up(q[zz[j]]);
  72. }
  73. }
  74. printf("%lld",dis[n]);
  75. }

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. 认识电脑的开机流程与主引导分区(MBR)

    在前篇随笔中,已经谈到了CMOS与BIOS,CMOS是记录各项硬件参数(包括系统时间.设备的I/O地址.CPU的电压和频率等)且嵌入到主板上面的存储器,BIOS是一个写入到主板上的韧体(韧体是写入到硬 ...

  2. bootstrap的carousel图片轮播

    整个轮播是放在一个div .carousel和.slide的div中的, 包括3个部分: 1. 第一个部分indicator位于下方的指示器部分. 结构是一个ol和li, ol的类是carousel- ...

  3. spring boot 多数据源分布式事务处理

    有参考文章 ,但是自己没有测试.

  4. POJ 1029 False coin

    http://poj.org/problem?id=1029 题意: 在一堆硬币中有一个假硬币,重量是重是轻不知道.每次称量多个硬币,并给出称量结果.判断依据题目给出的几次称量结果能否找出假硬币. 思 ...

  5. go 变量声明

    第一种,指定变量类型,声明后若不赋值,使用默认值. var v_name v_type v_name = value 第二种,根据值自行判定变量类型. var v_name = value 第三种,省 ...

  6. python 压缩tar 包

    import tarfile import os def make_targz(output_filename, source_dir): print("doing!") with ...

  7. Linux 安装iostat命令

    首先跟你的Linux系统有关 我用的是Red hat系统 记录下最快的安装iostat命令的方式 起初想查看iostat, 提示 iostat: command not found 于是,通过yum ...

  8. [ios]NSThread传值 NSValue传值

    NSThread:http://www.cocoachina.com/bbs/read.php?tid=51873 NSValue:http://blog.sina.com.cn/s/blog_bf9 ...

  9. Bata冲刺 第一天

    一.冲刺第一天完成任务情况及贡献小时数: 姓名 今日已完成任务 时间(h) 马仲山 代码调整 2 马婧(12) 整理需求文档 2 马婧(13) 整理设计文档 2 马世芳 编写测试文档 2 张俊逸   ...

  10. F4+2 团队项目软件设计方案

    目录 1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2总体设计 2.1需求规定 2.2运行环境 2.3基本设计概念和处理流程 2.4功能描述 2.5功能器求与程序的关系 2.6人工处 ...