loj2245 [NOI2014]魔法森林 LCT

[NOI2014]魔法森林

链接

loj

思路

a排序,b做动态最小生成树。
把边拆成点就可以了。
uoj98.也许lct复杂度写假了、、越卡常,越慢

代码

#include <bits/stdc++.h>
#define ls c[x][0]
#define rs c[x][1]
using namespace std;
const int N = 2e5 + 7;
int read() {int x = 0, f = 1; char s = getchar();for (;s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;for (;s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';return x * f;        
}
struct edge {int x, y, a, b;bool operator < (const edge &zz) const {return (a^zz.a) ? a < zz.a : b < zz.b;}
} G[N];
int f[N], c[N][2], w[N][2], ma[N][2], stak[N], lazy[N], id[N];
bool isroot(int x) {return c[f[x]][0] == x || c[f[x]][1] == x;}
void pushup(int x) {ma[x][0] = max(max(ma[ls][0], ma[rs][0]), w[x][0]);ma[x][1] = max(max(ma[ls][1], ma[rs][1]), w[x][1]);id[x] = (ma[x][1] == w[x][1]) ? x : (ma[ls][1] > ma[rs][1]) ? id[ls] : id[rs];
}
void tag(int x){swap(ls,rs), lazy[x] ^= 1;}
void pushdown(int x) {if (lazy[x]) {if (ls) tag(ls);if (rs) tag(rs);lazy[x] ^= 1;}
}
void rotate(int x) {int y = f[x], z = f[y], k = c[y][1] == x, w = c[x][!k];if (isroot(y)) c[z][c[z][1] == y] = x;c[x][!k] = y, c[y][k] = w;if (w) f[w] = y;f[x] = z, f[y] = x;pushup(y);
}
void splay(int x) {int y = x, z = 0;stak[++z] = y;while (isroot(y)) stak[++z] = y = f[y];while (z) pushdown(stak[z--]);while (isroot(x)) {y = f[x], z = f[y];if (isroot(y)) rotate((c[y][0] == x)^(c[z][0] == y) ? x : y);rotate(x);}pushup(x);
}
void access(int x) {for (int y = 0; x;x = f[y = x])splay(x), rs = y, pushup(x);
}
void makeroot(int x) {access(x), splay(x);tag(x);
}
int findroot(int x) {access(x), splay(x);while(ls) pushdown(x), x = ls;return x;
}
void split(int x, int y) {makeroot(x), access(y), splay(y);
}
void link(int x, int y) {makeroot(x);if (findroot(y) != x) f[x] = y;
}
void cut(int x, int y) {makeroot(x);if (findroot(y) == x && f[x] == y && !rs) {f[x] = c[y][0] = 0;pushup(y);}
}
int main() {int n = read(), m = read(), ans = 0x3f3f3f3f;for (int i = 1; i <= m; ++i)G[i].x = read(), G[i].y = read(), G[i].a = read(), G[i].b = read();sort(G + 1, G + 1 + m);for (int i = 1; i <= m; ++i) {if (G[i].x == G[i].y) continue;int x = G[i].x, y = G[i].y;if (findroot(x) == findroot(y)) {split(x, y);if (ma[y][1] > G[i].b) {int tmp = id[y];cut(G[tmp - n].x, tmp), cut(G[tmp - n].y, tmp);w[n + i][0] = G[i].a, w[n + i][1] = G[i].b;link(x, n + i), link(n + i, y);}} else {w[n + i][0] = G[i].a, w[n + i][1] = G[i].b;link(x, n + i), link(n + i, y);}if (findroot(1) == findroot(n)) {split(1, n);ans = min(ans, ma[n][0] + ma[n][1]);}}printf("%d\n", ans == 0x3f3f3f3f ? -1 : ans);return 0;
}

转载于:https://www.cnblogs.com/dsrdsr/p/10959020.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins发布spring boot到hub.Docker 方法

在生成的目录下&#xff0c;建立个文件&#xff0c;文件名称为&#xff1a;Dockerfile FROM java:8 VOLUME /tmp ADD target/assignment-0.0.1-SNAPSHOT.jar /dalaoyang.jar ENTRYPOINT ["java","-Djava.security.egdfile:/dev/./urandom","-jar&q…

网页视频直播、微信视频直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的直播接入需求...

背景分析 熟悉EasyNVR产品的朋友们都知道&#xff0c;EasyNVR不仅可以独成体系&#xff0c;而且还可以跟其他系列产品相配合&#xff0c;形成各种不同类型的解决方案&#xff0c;满足各种不同应用场景的实际需求。针对很多设备现场没有固定公网IP&#xff0c;但是又想实现公网、…

如何解决VMware Workstation 10.0.0 build-1295980马赛克现象

VMware Workstation 10.0.0 build-1295980偶尔出现客户机马赛克现象&#xff0c;可切换至其它选项卡&#xff0c;再切换回去即可。 还有一种方式是关闭加速3D图形。 转载于:https://www.cnblogs.com/rms365/p/10961499.html

不同账号间的云资源授权方法

阿里云的访问控制RAM产品可以实现资源的分配和授权,在一个特殊的业务背景下,资源也可以实现跨账号的授权使用. 背景: 1.A公司,作为甲方Party A,出资购买云资源,对云资源具有所有权,但不实际管理,需要乙方配合. 2.B公司,作为乙方Party B,要管理A公司的云资源,需要A公司授权云资…

知乎上已获千赞,全网独家首发!

前言 选了开发这一行&#xff0c;就意味着想混得好就要持续学习&#xff0c;你的技术和薪资、位置直接挂钩&#xff0c;进步对于程序员的重要性就不赘述了&#xff0c;接下来作为过来人&#xff0c;为广大同行分享一些学习干货&#xff0c;希望可以帮到大家 1、网络 网络协议…

知乎上已获千赞,持续更新中

前言 不知不觉自己已经做了几年开发了&#xff0c;由记得刚出来工作的时候感觉自己能牛逼&#xff0c;现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。 如果你的知识是一个圆&#xff0c;当你的圆越大时&#xff0c;圆外面的世界也就越大。 最近看到很多Androi…

centos下搭建Jenkins持续集成环境(安装jenkins)

centos下搭建Jenkins持续集成环境(安装jenkins) 1、安装JDK yum install -y java 2、安装jenkins 添加Jenkins库到yum库&#xff0c;Jenkins将从这里下载安装。 1 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo 2 rpm --import h…

elementUi Dialog 对话框使用中数据获取问题

Dialog 对话框&#xff1a;使用中数据获取问题演示代码&#xff1a; <div class"centerContent"><ul><li class"contentBox" v-for"(notice,index) in systemNotices" :key"index"> //循环取值<div class&quo…

全志_功能引脚配置_sys_config.fex

\lichee\tools\pack\chips\sun8iw5p1\configs\vstar\sys_config.fex;---------------------------------------------------------------------------------------------------------————————; port configuration:; port_name port:GPIO<mux><pull up/down&…

离开小厂进大厂的第一周,BTAJ大厂最新面试题汇集,面试总结

大佬带你走进Android开发的世界&#xff0c;掌握了这些知识点&#xff0c;学习Android也可以很轻松。 核心分析内容 对于怎么学习Android&#xff0c;主要解决的是3个问题&#xff1a;学什么、怎么学 & 怎么用。 具体如下&#xff1a; 下面&#xff0c;我将带着上述几个问…

POI增加 数据验证 下拉

POI增加验证列 List<String> nationality new ArrayList<String>();List<String> last_education new ArrayList<String>();List<String> graduated_yotei new ArrayList<String>();List<String> entrance_period new ArrayLis…

同源策略和跨域

同源策略是浏览器的一个安全功能&#xff0c;不同源的客户端脚本在没有明确授权的情况下&#xff0c;不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。 两个页面&#xff0c;域名 协议 端口都相同。表示同源 受前面所讲的浏览器同源策略的影…

程序员35岁真的是分水岭吗?小白也能看明白

前言 今天我给大家再次分享一下&#xff0c;我最近的一些读书的感想&#xff0c;思考起来&#xff0c;确实能够给自己带来一些真实的帮助和启发&#xff0c;希望大家在平时的工作学习中&#xff0c;也能够认清楚学习的一些本质。 如果我们的学习是在不断掌握应对具体工作场景…

远程桌面最新漏洞CVE-2019-0708 POC利用复现

POC有点鸡肋&#xff0c;并没有蓝屏&#xff01;&#xff01;&#xff01; POC运行环境&#xff1a; Python 3.5.6 |Anaconda 4.2.0 (64-bit)| (default, Aug 26 2018, 16:05:27) [MSC v.1 900 64 bit (AMD64)] on win32 依赖包及POC下载地址&#xff1a; 链接&#xff1a;http…

spring eureka集群+spring boot 微服务,容器化部署示例

一、docker安装 这里先采用在线安装&#xff0c;利用docker hup下载基础镜像 1.环境版本要求 内核版本3.10及其以上 操作系统位数为64位 CPU架构为x86_64或amd64&#xff08;目前也有别的支持&#xff09; 内核开启并支持cgroup和命名空间 2.命令检查内核版本,本地环境为cent…

程序员如何技术划水,手把手教你写Android项目文档,绝对干货

安卓开发大军浩浩荡荡&#xff0c;经过近十年的发展&#xff0c;Android技术优化日异月新&#xff0c;如今Android 11.0 已经发布&#xff0c;Android系统性能也已经非常流畅&#xff0c;可以在体验上完全媲美iOS。 但是&#xff0c;到了各大厂商手里&#xff0c;改源码、自定…

rabbitmq文档

https://blog.csdn.net/hellozpc/article/details/81436980转载于:https://www.cnblogs.com/nankeyimengningchenlun/p/10968594.html

spring cloud各个微服务打包到docker容器内

日常你所启动的微服务比如这样的 java -jar eureka-0.0.1-SNAPSHOT.jar --server.port41578 --spring.profiles.activelocal 然后想把它给整Docker里玩玩 首先要在打包好的Spring Boot同级目录下&#xff0c;建立一个Dockerfile 然后在这个文件下写上以下内容,大致的意思上从…

程序员如何自我学习和成长?深度好文

前言 工欲善其事必先利其器!在现代IT中&#xff0c;每个Android程序员都需要最好的工具来提高他们的技能和效率。在Android应用程序开发这个残酷的竞争行业中&#xff0c;只有优秀的程序员才能生存下去。你需要向客户展示你拥有的最佳技术和能力。 不仅仅是展示你的设备以吸引…

.net core 杂记:用Autofac替换内置容器

官方建议使用内置容器&#xff0c;但有些功能并不支持&#xff0c;如下&#xff1a;属性注入基于名称的注入子容器自定义生存期管理Func<T> 支持所以可以使用其他第三方IOC容器&#xff0c;如Autofac&#xff0c;下面为学习使用记录 一、首先准备了一个接口和其实现类 pu…