[bzoj5415]归程
1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 400005
4 struct ji1{
5 int x,y,z;
6 bool operator < (const ji1 &k)const{
7 return z>k.z;
8 }
9 }e[N];
10 struct ji2{
11 int nex,to,len;
12 }edge[N<<1];
13 struct ji3{
14 int k,d;
15 bool operator < (const ji3 &x)const{
16 return d>x.d;
17 }
18 };
19 priority_queue<ji3>q;
20 int T,E,n,m,x,y,z,w,ans,head[N],d[N],vis[N],v[N],ls[N],rs[N],f[N][21];
21 int find(int k){
22 if (k==f[k][0])return k;
23 return f[k][0]=find(f[k][0]);
24 }
25 void add(int x,int y,int z){
26 edge[E].nex=head[x];
27 edge[E].to=y;
28 edge[E].len=z;
29 head[x]=E++;
30 }
31 void dij(){
32 for(int i=2;i<=n;i++)d[i]=2e9;
33 memset(vis,0,sizeof(vis));
34 q.push(ji3{1,0});
35 while (!q.empty()){
36 int k=q.top().k;
37 q.pop();
38 if (vis[k])continue;
39 vis[k]=1;
40 for(int i=head[k];i!=-1;i=edge[i].nex){
41 int v=edge[i].to;
42 if (d[v]>d[k]+edge[i].len)q.push(ji3{v,d[v]=d[k]+edge[i].len});
43 }
44 }
45 }
46 void dfs(int k){
47 for(int i=1;i<=20;i++)f[k][i]=f[f[k][i-1]][i-1];
48 if (k<=n)return;
49 f[ls[k]][0]=f[rs[k]][0]=k;
50 dfs(ls[k]);
51 dfs(rs[k]);
52 }
53 int query(int k,int w){
54 for(int i=20;i>=0;i--)
55 if (w<v[f[k][i]])k=f[k][i];
56 return d[k];
57 }
58 int main(){
59 scanf("%d",&T);
60 while (T--){
61 scanf("%d%d",&n,&m);
62 memset(head,-1,sizeof(head));
63 E=ans=0;
64 for(int i=1;i<=m;i++){
65 scanf("%d%d%d%d",&x,&y,&z,&w);
66 add(x,y,z);
67 add(y,x,z);
68 e[i]=ji1{x,y,w};
69 }
70 dij();
71 for(int i=1;i<2*n;i++)f[i][0]=i;
72 sort(e+1,e+m+1);
73 for(int i=1;i<=m;i++){
74 x=find(e[i].x);
75 y=find(e[i].y);
76 if (x==y)continue;
77 v[++n]=e[i].z;
78 d[n]=min(d[x],d[y]);
79 ls[n]=x;
80 rs[n]=y;
81 f[x][0]=f[y][0]=n;
82 }
83 n=n/2+1;
84 dfs(2*n-1);
85 scanf("%d%d%d",&m,&z,&w);
86 for(int i=1;i<=m;i++){
87 scanf("%d%d",&x,&y);
88 printf("%d\n",ans=query((x+z*ans-1)%n+1,(y+z*ans)%(w+1)));
89 }
90 }
91 }
[bzoj5415]归程的更多相关文章
- BZOJ5415[Noi2018]归程——kruskal重构树+倍增+堆优化dijkstra
题目描述 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个 n 个节点.m 条边的无向连通图(节点的编号从 1 至 n).我们依次用 l,a 描述一条边的长度.海 ...
- 【BZOJ5415】【NOI2018】归程(克鲁斯卡尔重构树)
[NOI2018]归程(克鲁斯卡尔重构树) 题面 洛谷 题解 我在现场竟然没有把这道傻逼题给切掉,身败名裂. 因为这题就是克鲁斯卡尔重构树的模板题啊 我就直接简单的说一下把 首先发现答案就是在只经过海 ...
- BZOJ5415 [NOI2018] 归程
今天也要踏上归程了呢~(题外话 kruskal重构树!当时就听学长们说过是重构树辣所以做起来也很快233 就是我们按照a建最大生成树 这样话呢我们就可以通过生成树走到尽量多的点啦 然后呢就是从这个子树 ...
- BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)
Description Input Output Sample Input1 14 31 2 50 12 3 100 23 4 50 15 0 23 02 14 13 13 2 Sample Outp ...
- 并不对劲的bzoj5415:loj2718:uoj393:p4768:[NOI2018]归程
题目大意 \(n\)(\(n\leq2*10^5\))个点,\(m\)(\(m\leq4*10^5\))条边的图,每条边有海拔\(a_i(a_i\leq10^9)\).长度\(l_i(l_i\leq1 ...
- 【BZOJ5415&UOJ393】归程(Kruskal重构树,最短路)
题意:From https://www.cnblogs.com/Memory-of-winter/p/11628351.html 思路:先从1开始跑一遍dijkstra,建出kruskal重构树之后每 ...
- LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)
LOJ2718 BZOJ5415 洛谷P4768 Rank3+Rank1无压力 BZOJ最初还不是一道权限题... Update 2019.1.5 UOJ上被hack了....好像是纯一条链的数据过不 ...
- LG4768 [NOI2018]归程
题意 题目背景 本题因为一些原因只能评测16组数据. 剩下的四组数据:https://www.luogu.org/problemnew/show/U31655 题目描述 本题的故事发生在魔力之都,在这 ...
- [NOI2018]归程 kruskal重构树
[NOI2018]归程 LG传送门 kruskal重构树模板题. 另一篇文章里有关于kruskal重构树更详细的介绍和更板子的题目. 题意懒得说了,这题的关键在于快速找出从查询的点出发能到达的点(即经 ...
随机推荐
- Serverless 在大规模数据处理的实践
作者 | 西流 阿里云技术专家 前言 当您第一次接触 Serverless 的时候,有一个不那么明显的新使用方式:与传统的基于服务器的方法相比,Serverless 服务平台可以使您的应用快速水平扩展 ...
- 洛谷3571 POI2014 SUP-Supercomputer (斜率优化)
一道神仙好题. 首先看到有多组\(k\),第一反应就是离线. 考虑贪心. 我们每次一定是尽量选择有儿子的节点.以便于我们下一次扩展. 但是对于一个\(k\),每次贪心的复杂度是\(O(n)\) 总复杂 ...
- 破解安装pyhotn
1.网址 https://www.jetbrains.com/pycharm/download/#section=windows,打开页面,点击下载专业版 2.这是下载好的文件,双击运行即可. //详 ...
- 1. SSTI(模板注入)漏洞(入门篇)
好久没更新博客了,现在主要在作源码审计相关工作,在工作中也遇到了各种语言导致的一些SSTI,今天就来大概说一下SSTI模板注入这个老生常谈的漏洞 前言 模板引擎 模板引擎(这里特指用于Web开发的模板 ...
- 巧用 CSS3 filter(滤镜) 属性
原文链接:CSS3 filter(滤镜) 属性 效果预览 filter: grayscale(100%); 定义和使用 filter 属性定义了元素(通常是<img>)的可视效果(例如:模 ...
- 【数据结构与算法Python版学习笔记】树——平衡二叉搜索树(AVL树)
定义 能够在key插入时一直保持平衡的二叉查找树: AVL树 利用AVL树实现ADT Map, 基本上与BST的实现相同,不同之处仅在于二叉树的生成与维护过程 平衡因子 AVL树的实现中, 需要对每个 ...
- MySQL复习(一)MySQL架构
MySQL架构 MySQL采用的是C/S架构,我们在使用MySQL的时候,都是以客户端的身份,发送请求连接到运行服务端的MySQL守护进程,而MySQL服务器端则根据我们的请求进行处理并把处理后的结果 ...
- Ruby on Rails 单元测试
Ruby on Rails 单元测试 为什么要写测试文件? 软件开发中,一个重要的环节就是编写测试文件,对代码进行单元测试,确保程序各部分功能执行正确.但是,这一环节很容易被我们轻视,认为进行单元测试 ...
- Linux下Zabbix5.0 LTS监控基础原理及安装部署(图文教程)
Zabbix 是什么? zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置,能监视 ...
- WPF进阶技巧和实战08-依赖属性与绑定03
数据提供者 在大多数的代码中,都是通过设置元素的DataContext属性或者列表控件的ItemsSource属性,从而提供顶级的数据源.当数据对象是通过另一个类构造时,可以有其他选择. 一种是作为窗 ...