題意
乙個含有
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語句,還附加上注釋。如...