日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

L - 芜湖塔台请求起飞

發布時間:2024/3/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 L - 芜湖塔台请求起飞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

L - 蕪湖塔臺請求起飛

題目大意

給出一棵大小為 n n n的樹,有如下操作:

  • 更改一個節點的權值
  • 查詢從x到y路徑上的權值和
  • 查詢從x到y路徑上的最大權值

題解

如果是在一個序列中,上面的操作非常容易用線段樹來完成,但是在樹上并不能。

于是就要想一個辦法使得樹變成一個序列。

很顯然,就是樹鏈剖分。

利用倍增求LCA,然后分別就是從x到LCA與從y到LCA的答案。

修改操作就直接在線段樹上完成。

時間復雜度

線段樹上一次查詢的復雜度是 O ( log ? n ) O(\log n) O(logn)的,

因為重邊是連在 d f n dfn dfn一起的,可以一起查詢,于是查詢的次數就取決于輕邊的次數。

根據重邊的性質,可以知道,向下每走過一條輕邊,子樹大小至少減半,

那么最多走過的輕邊數量就是 l o g n log_n logn?

所以總的時間復雜度是 O ( q × log ? 2 n ) O(q\times \log^2 n) O(q×log2n)

Tag

樹鏈剖分

線段樹

倍增LCA

code

//#pragma GCC optimize (2) //#pragma G++ optimize (2) #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <iostream> #define G getchar #define ls(x) (x << 1) #define rs(x) (x << 1 | 1) #define mx(x) a[x].mx #define s(x) a[x].s using namespace std;int read() {char ch;for(ch = G();(ch < '0' || ch > '9') && ch != '-';ch = G());int n = 0 , w;if (ch == '-'){w = -1;ch = G();} else w = 1;for(;'0' <= ch && ch <= '9';ch = G())n = (n<<1)+(n<<3)+ch-48;return n * w; }const int N = 30005; int dfn [N] , son[N] , tot , n , m , fa [16] [N] , x , y , dep [N]; int nxt [ N << 1] , lst [N] , to [N << 1] , si [N] , v [N] , top [N]; int opv , opl , opr , opt , pos;struct node {int mx , s; }a[N << 2];void dfs_1 (int x) {si [x] = 1;for (int i = lst [x] ; i ; i = nxt [i]){if (to [i] ^ fa [0] [x]){fa [0][ to[i] ] = x;dfs_1(to[i]);si[x] += si[to[i]];if (si[to[i]] > si[son[x]]) son[x] = to[i];}} }void dfs_2 (int x) {dep[x] = dep[fa[0][x]] + 1;dfn [x] = ++ tot;if (son[x]){top[son[x]] = top[x];dfs_2(son[x]);}for (int i = lst [x] ; i ; i = nxt [i])if (dfn[to[i]] == 0){top[to[i]] = to[i];dfs_2(to[i]);} }int lca (int x , int y) {if (dep[x] < dep[y]) swap(x , y);for (int i = 15 ; i >= 0 ; i--)if (dep[fa[i][x]] >= dep[y]) x = fa[i][x];for (int i = 15 ; i >= 0 ; i--)if (fa[i][x] ^ fa[i][y]){x = fa[i][x];y = fa[i][y];}if (x ^ y) return fa[0][x];else return x; }void ins (int x , int y) {nxt[++tot] = lst[x];to[tot] = y;lst[x] = tot; }void updata (int x) {mx(x) = max(mx(ls(x)) , mx(rs(x)));s(x) = s(ls(x)) + s(rs(x)); }void work (int x , int l , int r) {if (opl <= l && r <= opr){switch (opt){case 1:{mx(x) = s(x) = opv;break;}case 2:{opv = opv + s(x);break;}case 3:{opv = max(opv , mx(x));break;}}return;}int m = (l + r) >> 1;if (opl <= m) work(ls(x) , l , m);if (m < opr) work(rs(x) , m + 1 , r);updata(x); }void calc (int x , int y) {for (; dep[top[x]] > dep[y] ;){opl = dfn[top[x]];opr = dfn[x];work(1 , 1 , n);x = fa[0][top[x]];}opl = dfn[y];opr = dfn[x];work(1 , 1 , n); }int main() {freopen("l.in","r",stdin);//freopen("l.out","w",stdout);n = read();for (int i = 1; i < n; ++i){x = read();y = read();ins (x , y);ins (y , x);}dfs_1(1);for (int i =1 ; i < 16; i++)for (int j = 1 ; j <= n ; j++)fa[i][j] = fa[i - 1][fa[i - 1][j]];tot = 0;top[1] = 1;dfs_2(1);opt = 1;for (int i = 1 ; i <= n ; i++){opv = read();opl = opr = dfn[i];v[i] = opv;work(1 , 1 , n);}m = read();for (int i = 0; i < m; ++i){opt = read();x = read();y = read();pos = lca(x , y);if (opt == 1){opl = opr = dfn[x];opv = y;v[x] = y;work(1 , 1 , n);}else{if (opt == 2) opv = -v[pos]; else opv = v[pos];calc(x , pos);calc(y , pos);printf("%d\n", opv);}}return 0; }

總結

以上是生活随笔為你收集整理的L - 芜湖塔台请求起飞的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品字幕 | 免费av高清| 日韩操比| 日韩电影在线观看中文字幕 | 日韩1区| 人民的名义第二部 | 污污视频在线播放 | 我和我的太阳泰剧在线观看泰剧 | 麻豆亚洲av成人无码久久精品 | 婷婷色一区二区三区 | 国产有码在线观看 | 性爱视频日本 | 五月天狠狠操 | 人人狠狠综合久久亚洲 | 精品人妻视频在线 | youjizz.com最新| 亚洲涩视频 | 双性娇喘浑圆奶水h男男漫画 | 亚洲成av人片在线观看无 | 国产精品一区在线观看 | 欧美激情黄色 | 人妻激情偷乱视频一区二区三区 | 九九热精品在线 | 99久久久无码国产精品性波多 | 午夜伦理在线观看 | 日日夜夜添| tube极品少妇videos| 国产最新毛片 | 国产精品另类 | 亚洲国产黄色av | 国内91视频| 国产美女免费视频 | a级淫片| 色国产在线 | 欧美日韩在线播放 | 亚洲精品日韩av | 成人一级毛片 | 国产情侣在线播放 | 91精品国产99久久久久久 | 婷婷调教口舌奴ⅴk | 姐姐av | av中文字幕在线免费观看 | 原神淫辱系列同人h | 性——交——性——乱免费的 | 丰满熟妇肥白一区二区在线 | 亚洲一区二区美女 | 在线免费观看黄色av | 91丨porny丨中文 | 国产一级视频在线播放 | 欧美色呦呦 | 一区二区三区高清不卡 | 精品视频一区二区在线 | 影音先锋中文字幕人妻 | 日韩黄片一区二区三区 | 脱裤吧导航 | 欧美涩色| 黄色片在线免费观看 | 欧美日韩综合一区二区 | 少妇被中出 | 中文字幕在线观看网站 | www色综合| 国产激情无码一区二区 | а√在线中文网新版地址在线 | 粉嫩av网站 | 99久久久国产精品 | 先锋资源一区二区 | 欧美天堂网站 | 亚洲精品传媒 | www.天天射| 黄色一级生活片 | 国产免费午夜 | 久久久无码精品亚洲无少妇 | 久久久久久国产精品一区 | 久青草影院 | 日日骚av| 91丨porny丨 | 公侵犯一区二区三区四区中文字幕 | 欧美性一区 | 日韩一及片| 国产不卡一二三 | 欧美一区二区三区视频在线 | 美女张开腿流出白浆 | 亚洲精品www久久久久久 | 亚洲一级网站 | 久久99网站 | 夜夜嗨av一区二区三区免费区 | 日本不卡视频在线 | 国产伦子伦对白视频 | 91成人精品国产刺激国语对白 | 国产精品99久久久久久动医院 | 操的网站 | 国产裸体视频 | 天天操天天干天天爽 | 欧美风情第一页 | 欧美日韩中文字幕一区二区三区 | 91搞搞| 亚洲三区在线观看无套内射 | 久久免费视频一区二区 | 漂亮人妻被中出中文字幕 |