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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 3966-Aragorn's Story 树链剖分+树状数组

發(fā)布時間:2023/12/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 3966-Aragorn's Story 树链剖分+树状数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接


題意:有一棵樹,每個節(jié)點有權(quán)值
有三種操作:

  • I c1 c2 k 從節(jié)點c1到節(jié)點c2的路徑上每個節(jié)點權(quán)值增加k
  • D c1 c2 k 從節(jié)點c1到節(jié)點c2的路徑上每個節(jié)點權(quán)值減少k
  • Q i 查詢節(jié)點i的權(quán)值是多少

思路:

  • 樹鏈剖分處理出來的鏈放在數(shù)組中,使用樹狀數(shù)組維護
  • 樹狀數(shù)組進行區(qū)間修改,單點查詢

樹狀數(shù)組區(qū)間修改,單點查詢的方法:鏈接


#include <stdio.h> #include <iostream> #include <string.h> #include <stdlib.h> #include <vector> #include <algorithm> #include <queue> #include <map> #include <stack> #include <string> #include <math.h> #include <bitset> #include <ctype.h> #define CLR(n,b) memset(n, b, sizeof(n)) using namespace std; typedef pair<int,int> P; typedef long long LL; const int INF = 0x3f3f3f3f; const double PI = acos(-1.0); const double eps = 1e-9; const int N = 6e4 + 5; const int mod = 1e9 + 7; struct Edge {int u,v;Edge() {}Edge(int a, int b): u(a), v(b) {} }; int fa[N],son[N], p[N],fp[N], top[N],dep[N],sz[N]; int pos; int n,m,k; vector<Edge> edges; vector<int> G[N]; void init(int n) {CLR(fa, 0); CLR(son, -1); CLR(p, -1);CLR(fp, -1); CLR(top, 0); CLR(sz, 0); CLR(dep, 0);pos = 0; edges.clear();for(int i = 0; i <= n; i++) G[i].clear(); } void addedge(int u, int v) {edges.push_back(Edge(u,v));edges.push_back(Edge(v,u));int m = edges.size();G[u].push_back(m-2);G[v].push_back(m-1); }// 樹鏈剖分void dfs(int u, int pre, int d) {fa[u] = pre;dep[u] = d;sz[u] = 1;son[u] = -1;for(int i = 0; i < G[u].size(); i++){Edge &e = edges[G[u][i]];int v = e.v;if(v == pre) continue;dfs(v, u, d+1);sz[u] += sz[v];if(son[u] == -1 || sz[son[u]] < sz[v])son[u] = v;} }void getpos(int u, int sp) {top[u] = sp;p[u] = ++pos;fp[p[u]] = u;if(son[u] == -1) return;getpos(son[u], sp);for(int i = 0; i < G[u].size(); i++){Edge &e = edges[G[u][i]];int v = e.v;if(v == son[u] || v == fa[u]) continue;getpos(v, v);} }// 樹狀數(shù)組 int c[N]; inline int lowbit(int x) {return x&(-x); } void add(int x, int val) {while(x <= n){c[x] += val;x += lowbit(x);} } int sum(int x) {int ans = 0;while(x){ans += c[x];x -= lowbit(x);}return ans; }// change void change(int x, int y, int val) {int u = x, v = y;int f1 = top[u], f2 = top[v];while(f1 != f2){if(dep[f1] < dep[f2]){swap(f1,f2);swap(u,v);}add(p[f1], val);add(p[u]+1, -val);u = fa[f1];f1 =top[u];}if(dep[u] > dep[v]) swap(u,v);add(p[u], val);add(p[v]+1, -val); }int a[N]; int main() {while(~scanf("%d%d%d", &n, &m, &k)){init(n);for(int i = 1; i <= n; i++){scanf("%d", &a[i]);}for(int i = 0; i < m; i++){int u,v;scanf("%d%d", &u, &v);addedge(u,v);}dfs(1,1,0);getpos(1,1);memset(c, 0, sizeof(c));for(int i = 1; i <= n; i++){add(p[i], a[i]);add(p[i]+1, -a[i]);}while(k--){char cmd[10];int x,y,z;scanf("%s", cmd);if(cmd[0] == 'Q'){scanf("%d", &x);printf("%d\n", sum(p[x]));}else{scanf("%d%d%d", &x,&y,&z);if(cmd[0] == 'D')z = -z;change(x,y,z);}}}return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/Alruddy/p/7492307.html

總結(jié)

以上是生活随笔為你收集整理的HDU 3966-Aragorn's Story 树链剖分+树状数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费黄色高清视频 | 亚洲日本中文字幕在线 | 亚洲国产情侣 | 黄色三级国产 | 国产特级片 | 91国内揄拍国内精品对白 | 麻豆视频免费入口 | 超碰超碰| 免费欧美一级片 | 国产高清视频在线观看 | av中文资源在线 | 午夜精品福利在线 | 夜久久久 | 亚洲色图校园春色 | 69堂精品 | 精品一区视频 | 精品人妻人伦一区二区有限公司 | xxxx日本免费 | 四虎网址在线观看 | 韩国精品一区二区三区 | 日韩一二三级 | 一区二区三区美女 | 日产精品久久久久久久 | 中国黄色大片 | 国产视频一区二区三区在线播放 | 女女h百合无遮涩涩漫画软件 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 国产日韩精品一区 | 落日余晖 | aaa欧美 | 久久伊人免费视频 | 日韩av高清在线播放 | 国产精品久久久久久久av | 欧美三级午夜理伦三级中视频 | 可以免费看的av | 国产福利视频一区 | 久久水蜜桃 | 天天想夜夜操 | 国产大奶在线观看 | 凹凸国产熟女精品视频 | 佐佐木明希电影 | 韩日黄色片 | 男女被到爽流尿 | 丝袜视频在线 | 丰满岳妇伦在线播放 | 欧美精品欧美极品欧美激情 | 流白浆视频 | 成人香蕉视频 | 色图自拍偷拍 | 亚洲综合成人亚洲 | 在线看av网址| 二区不卡| 成人片在线视频 | 欧美日韩不卡一区二区三区 | av色欲无码人妻中文字幕 | 国语对白对话在线观看 | 尤物视频在线观看 | 电车痴汉在线观看 | 天天综合干 | 天天爱天天舔 | 秋霞成人网 | 亚洲欧美日韩在线一区 | 亚洲中文字幕久久无码 | 91精品福利视频 | 精品在线播放视频 | 91香蕉久久 | 性综合网 | 色播激情| 最新地址在线观看 | 色之久久综合 | 国产调教在线观看 | 肉感丰满的av演员 | 韩国精品视频在线观看 | 青草精品| 无码人妻丰满熟妇啪啪 | 亚洲男人天堂网站 | 99久久婷婷国产综合精品 | 一区二区三区四区日韩 | 久久免费在线观看 | 福利片在线播放 | 欧美日韩一区二区在线播放 | 4438激情网 | 日批免费在线观看 | 538精品一线| 亚洲欧美一区二区三区在线观看 | 久久久男人天堂 | 中文字幕一区日韩 | 一本色道久久88综合日韩精品 | 国产手机在线播放 | 99精品久久久久久久婷婷 | 成人午夜在线播放 | 久久久久久中文字幕 | 就要干就要操 | 国产xx在线观看 | 国产极品尤物 | 亚洲人成电影一区二区在线 | 日本成人免费在线视频 | 在线视频 一区二区 | 久久加勒比 |