題目大意:給定一棵樹。有三種操作:
$0\;u\;v\;t:$在$u$到$v$的鏈上進行重要度為$t$的資料傳輸。
$1\;x:$結束第$x$個時刻的資料傳輸(保證合法)。
$2\;x:$詢問不經過點$x$的資料傳輸中重要度最大的是多少(無解輸出$-1$)。
題解:可以發現一條路徑對所有不在這條路徑上的點有貢獻,所以可以把這些區間給排除(樹鏈剖分中的每一條鏈存下來),把其他位置加上乙個數,可以給每個點維護乙個大根堆。
考慮刪除乙個數,可以再開乙個大根堆,表示刪除的數,若兩個堆頂元素相同,就彈出。
卡點:無
c++ code:
#include #include #include #include #define maxn 100010inline int min(int a, int b)
inline int max(int a, int b)
int head[maxn], cnt;
struct edge e[maxn << 1];
inline void add(int a, int b) ; head[a] = cnt;
}int n, m;
namespace sgt
inline void del(int x)
inline int top()
} v[maxn << 2];
int l, r, num, op;
void modify(int rt, int l, int r)
int mid = l + r >> 1;
if (l <= mid) modify(rt << 1, l, mid);
if (r > mid) modify(rt << 1 | 1, mid + 1, r);
} void add(int __l, int __r, int __num)
void del(int __l, int __r, int __num)
int __ask(int rt, int l, int r)
int ask(int __l)
}using sgt::add;
using sgt::del;
using sgt::ask;
int fa[maxn], dep[maxn], sz[maxn];
int dfn[maxn], idx, top[maxn], son[maxn];
void dfs1(int u) }}
void dfs2(int u) }}
struct modify mo[200010];
struct list
} s[maxn];
void modify(int u, int v, int x, int op = 1) ;
u = fa[::top[u]];
} if (dfn[u] > dfn[v]) std::swap(u, v);
s[top++] = (list) ;
std::sort(s, s + top);
int reach = 1;
for (int i = 0; i < top; reach = max(reach, s[i++].r + 1)) if (reach < s[i].l)
if (reach <= n)
}int main()
dfs1(1);
top[1] = 1;
dfs2(1);
for (int i = 1; i <= m; i++) ;
modify(x, y, z);
break;
case 1:
modify(mo[x].u, mo[x].v, mo[x].x, 0);
break;
case 2:
std::cout << ask(dfn[x]) << '\n';
break;
} }return 0;
}
洛谷3246 HNOI2016 序列
標籤 掃瞄線,樹狀陣列,單調棧 題目傳送門 給定長度為n的序列 a1,a2,an,記為a 1 n 類似地,a l r 1 l r n 是指序列 al,al 1,ar 1,ar。若1 l s t r n,則稱a s t 是a l r 的子串行。現在有q個詢問,每個詢問給定兩個數l和r,1 l r n,...
洛谷 P3197 HNOI2008 越獄
來來來,日常水一篇 滑稽 監獄有連續編號為1 n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄 輸入格式 輸入兩個整數m,n.1 m 10 8,1 n 10 12 輸出格式 可能越獄的狀態數,模1000...
洛谷P3227 HNOI2013 切糕
題目大意 有乙個 n times m 的切糕,每乙個位置的高度可以在 1,k 之間,每個高度有乙個代價,要求四聯通的兩個格仔之間高度最多相差 d 問可行的最小代價。n,m,k,d leqslant 40 題解 網路流,不考慮相差為 d 的條件時,可以給每個位置建乙個點,源點連向高度為 1 的點容量為...