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.pswp.cn/news/386716.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386716.shtml
英文地址,請注明出處:http://en.pswp.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…