除以路徑中所有數 時間戳 LCA 路徑壓縮 2D

2021-07-07 01:15:47 字數 942 閱讀 2755

題意

乙個含有

n個點的樹,邊上都有乙個正整數權值,進行兩種操作: 1

、1 u v w ,用w

依次除以u到

v簡單路徑上所有邊的權值,輸出結果 2

、2 p c

,將第p

條邊的權值變為

c,邊權值只會變小,不會變大 思路

注意到乙個不大於

1e18

的數進行除運算,最多會除以

o(log)

次大於1

的數。隨意指定乙個根建樹,每次的詢問利用

lca找到對應的簡單路徑,用並查集做路徑壓縮,當一條邊的權值變為

1之後,就沒有訪問的必要了。

#include using namespace std;

typedef long long ll;

typedef pairpii;

#define inf 1e9

#define sz(c) int(c.size())

#define all(c) c.begin(), c.end()

#define set(c, v) memset(c, v, sizeof (c))

const int n = 2e5 + 9;

const int m = 1e9 + 7;

ll w[n];

vector g[n];

int p[n], in[n], out[n], idx[n], id;

void dfs(int u)

out[u] = id;

}int next(int u)

void tolca(int u, int v, ll &c) {

if (!u || !c) return;

if (in[u] <= in[v] && out[u] >= out[v]) return;

//cout<<"in"<

清除sql表中所有資料

其實刪除資料庫中資料的方法並不複雜,為什麼我還要多此一舉呢,一是我這裡介紹的是刪除資料庫的所有資料,因為資料之間可能形成相互約束關係,刪除操作可能陷入死迴圈,二是這裡使用了微軟未正式公開的sp msforeachtable儲存過程。也許很多讀者朋友都經歷過這樣的事情 要在開發資料庫基礎上清理乙個空庫...

mysql刪除表中所有資料

delete from表名 truncate table表名 不帶where 引數的delete 語句可以刪除 mysql 表中所有內容,使用 truncate table 也可以清空 mysql 表中所有內容。效率上truncate 比delete 快,但truncate 刪除後不記錄 mysql...

找出字串中所有數字

剛才在skype問insus.net乙個問題,在ms sql中,怎樣找出乙個字串所有數字。insus.net使用較簡單與平常的方法,就是使用迴圈的方法,迴圈字串中每乙個字元,並插入至乙個表變數中。然後再select這個表變數,條件中使用了正規表示式來實現。請參考下面完整的sql語句,還附加上注釋。如...