uoj#274. 【清华集训2016】温暖会指引我们前行

时间:2021-10-29 20:35:01

http://uoj.ac/problem/274

由于边权互不相同,只需用lct维护带加边的最大生成树

#include<bits/stdc++.h>
#define lc ch][0
#define rc ch][1
#define fa ch][2
#define rv ch][3
#define val ch][4
#define mv ch][5
#define len ch][6
#define sl ch][7
const int N=;
int ch[N][],stk[N];
int _(){
int x=,c=getchar();
while(c<)c=getchar();
while(c>)x=x*+c-,c=getchar();
return x;
}
int min(int a,int b){return a<b?a:b;}
int wc(int x){return x!=x[fa][lc];}
bool nrt(int x){return x==x[fa][lc]||x==x[fa][rc];}
void up(int x){
int l=x[lc],r=x[rc];
x[mv]=min(x[val],min(l[mv],r[mv]));
x[sl]=x[len]+l[sl]+r[sl];
}
void _rv(int x){
if(x)x[rv]^=,std::swap(x[lc],x[rc]);
}
void dn(int x){
if(x[rv]){
x[rv]=;
_rv(x[lc]);
_rv(x[rc]);
}
}
void rot(int x){
int f=x[fa],g=f[fa],d=wc(x);
if(nrt(f))g[ch][wc(f)]=x;
x[fa]=g;
(f[ch][d]=x[ch][d^])[fa]=f;
(x[ch][d^]=f)[fa]=x;
up(f);
}
void sp(int x,int z=){
int stp=;
for(int a=x;nrt(stk[++stp]=a);a=a[fa]);
for(;stp;dn(stk[stp--]));
while(nrt(x)&&x[fa]!=z){
int f=x[fa];
if(nrt(f)&&f[fa]!=z)rot(wc(x)==wc(f)?f:x);
rot(x);
}
up(x);
}
void acs(int x){
int x0=x,y=;
for(;x;sp(x),x[rc]=y,up(y=x),x=x[fa]);
sp(x0);
}
void mrt(int x){
acs(x),_rv(x);
}
void get(int x,int y){
mrt(x),acs(y),sp(x,y);
}
int n,m;
int main(){
n=_();
for(int i=;i<=n;++i)i[val]=i[mv]=0x3f3f3f3f;
for(m=_();m;--m){
int o=_();
if(o==){
int id=_()+n+,x=_()+,y=_()+,t=_(),l=_();
get(x,y);
id[val]=t,id[len]=l,up(id);
if(x[fa]!=y)x[fa]=id,id[fa]=y;
else if(x[rc][mv]<t){
int z=x[rc],tg=x[rc][mv];
for(;z[val]!=tg;dn(z),z=z[ch][z[lc][mv]!=tg]);
sp(z);
z[lc][fa]=z[rc][fa]=,z[lc]=z[rc]=,up(z);
mrt(x),x[fa]=id,id[fa]=y;
}
}else if(o==){
int x=_()+,y=_()+;
printf("%d\n",x==y?:(get(x,y),x[fa]!=y?-:x[rc][sl]));
}else{
int id=_()+n+,l=_();
sp(id),id[len]=l,up(id);
}
}
return ;
}

uoj#274. 【清华集训2016】温暖会指引我们前行的更多相关文章

  1. &lbrack;UOJ&num;274&rsqb;&lbrack;清华集训2016&rsqb;温暖会指引我们前行

    [UOJ#274][清华集训2016]温暖会指引我们前行 试题描述 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了一 ...

  2. UOJ&lowbar;274&lowbar;&lbrack;清华集训2016&rsqb;温暖会指引我们前行&lowbar;LCT

    UOJ_274_[清华集训2016]温暖会指引我们前行_LCT 任务描述:http://uoj.ac/problem/274 本题中的字典序不同在于空串的字典序最大. 并且题中要求排序后字典序最大. ...

  3. &lbrack;清华集训2016&rsqb;温暖会指引我们前行——LCT&plus;最大生成树

    题目链接: [清华集训2016]温暖会指引我们前行 题目大意:有$n$个点$m$次操作,每次操作分为三种:1.在$u,v$两点之间连接一条编号为$id$,长度为$l$,温度为$t$的边.2.查询从$u ...

  4. 【bzoj4736&sol;uoj&num;274】&lbrack;清华集训2016&rsqb;温暖会指引我们前行 语文题&plus;LCT

    题目描述 http://uoj.ac/problem/274 题解 语文题+LCT 对于这种语文题建议还是自己读题好一些... 读懂题后发现:由于温度互不相同,最大生成树上的路径必须走(不走的话温度大 ...

  5. UOJ274 &lbrack;清华集训2016&rsqb; 温暖会指引我们前行 【LCT】【最大生成树】

    题目分析: 差评,最大生成树裸题.hack数据还卡常. 代码: #include<bits/stdc++.h> using namespace std; ; struct LCT{ ],d ...

  6. BZOJ 4732 UOJ &num;268 &lbrack;清华集训2016&rsqb;数据交互 &lpar;树链剖分、线段树&rpar;

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4732 (UOJ) http://uoj.ac/problem/268 题解 ...

  7. &lbrack;UOJ&num;276&rsqb;&lbrack;清华集训2016&rsqb;汽水&lbrack;分数规划&plus;点分治&rsqb;

    题意 给定一棵 \(n\) 个点的树,给定 \(k\) ,求 \(|\frac{\sum w(路径长度)}{t(路径边数)}-k|\)的最小值. \(n\leq 5\times 10^5,k\leq ...

  8. UOJ &num;274&period; 【清华集训2016】温暖会指引我们前行 &lbrack;lct&rsqb;

    #274. [清华集训2016]温暖会指引我们前行 题意比较巧妙 裸lct维护最大生成树 #include <iostream> #include <cstdio> #incl ...

  9. 【UOJ274】【清华集训2016】温暖会指引我们前行 LCT

    [UOJ274][清华集训2016]温暖会指引我们前行 任务描述 虽然小R住的宿舍楼早已来了暖气,但是由于某些原因,宿舍楼中的某些窗户仍然开着(例如厕所的窗户),这就使得宿舍楼中有一些路上的温度还是很 ...

  10. bzoj 4736 &sol;uoj274【清华集训2016】温暖会指引我们前行 lct

    [清华集训2016]温暖会指引我们前行 统计 描述 提交 自定义测试 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了 ...

随机推荐

  1. What is classical music

    quanben's definition of classical music is a definition formed by the following aspects, 1. music wr ...

  2. Android 源码下载

    一直想尝试android源码的编译,这两天正好海思代码的编译也需要ubuntu环境,于是安装了ubuntu 12.04,安装时选了语言为中文,因此下面很多状态及错误报告都是中文了,另外分配了4G sw ...

  3. &lbrack;ACM&lowbar;搜索&rsqb; ZOJ 1103 &vert;&vert; POJ 2415 Hike on a Graph &lpar;带条件移动3盘子到同一位置的最少步数 广搜)

    Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...

  4. seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码

    seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码 网页摘要是搜索引擎搜索结果下的几行字,用户能通过网页摘要迅速了解到网页的大概内容,传统的摘要是纯文字摘要,而结 ...

  5. 剑指offer系列27--表示数值的字符串

    [题目]请实现一个函数用来判断字符串是否表示数值(包括整数和小数). 例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值. 但是”12e”,”1a3.14 ...

  6. Linux下安装MySQLdb

    在Linux下使用Python访问MySQL的方法之一是使用MySQLdb module,下面将介绍在Linux下如何安装MySQLdb的过程. (1)下载MySQLdb 从SourceForge.n ...

  7. Oracle(&plus;)号用法

    Oracle左连接.右连接.全外连接以及(+)号用法 Oracle  外连接(OUTER JOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应S ...

  8. Oracle数据库之开发PL&sol;SQL子程序和包

    Oracle数据库之开发PL/SQL子程序和包   PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保 ...

  9. 如何通过 WebP 兼容减少图片资源大小

    作者:学军又拍云 CDN 服务公测 WebP 自适应功能,为客户减少图片资源大小.本文我们将一起来阐述WebP兼容的来龙去脉. 前言我们知道,理想的网页应该在 1 秒内打开,而在页面的整体大小中,图片 ...

  10. https原理通俗了解

    摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于&quot ...