復健訓練難題掃除計畫

2022-09-20 13:54:12 字數 2041 閱讀 8821

本次沒有專門設定簽到題, 為了降低一定的難度, 作者將題目思路寫在了題目標題處

難點: tle

需要多種剪枝:

難點: 思維

正常情況應以島嶼的x軸座標為依據進行貪心, 但這樣會導致錯誤結果

正確做法:

難點: tle, re, wa, mle, ce

尤其要注意的是, 本題兩點間的距離為樹上路徑中所有節點點權的異或和

剩下的, 就是乙個基礎的lca問題, 不會還不趕快去學

#include #include #include using namespace std;

const int n = 1e5 + 10, m = 2e5 + 10;

int n, m;

int c[n];

int h[n], e[m], ne[m], idx;

int dist[n], depth[n];

int fa[n][16];

void add(int a, int b)

void dfs(int u, int fa)

}void bfs(int u)}}

}int lca(int a, int b)

return fa[a][0];

}int main()

dfs(1, -1);

bfs(1);

for (int i = 1; i <= m; i ++ )

return 0;

}

難點: 無

\(\begin 1 & 1 \\ 1 & 0 \end \cdot \binom} = \binom}}\)

同理會有擴充套件, 這類題目就需要自己去積累了

難點: tle, re, wa, ce

大型的線段樹, 二階線段樹

需要用到區間求和區間修改, 用到的知識點為:懶標記

#include #include using namespace std;

typedef long long ll;

const int n = 1e5 + 10;

int n, m;

ll a[n];

struct node tr[n * 4];

void pushup(node& u, node& l, node& r)

void pushup(int u)

void pushdown(node& u, node& l, node& r)

}void pushdown(int u)

void build(int u, int l, int r) ;

return ;

}int mid = (l + r) >> 1;

//tr[u] = ;

tr[u].l = l;

tr[u].r = r;

build(u << 1, l, mid);

build(u << 1 | 1, mid + 1, r);

pushup(u);

}void modify(int u, int l, int r, ll c)

pushdown(u);

int mid = (tr[u].l + tr[u].r) >> 1;

if(l <= mid) modify(u << 1, l, r, c);

if(r > mid) modify(u << 1 | 1, l, r, c);

pushup(u);

}ll query(int u, int l, int r)

int main()

else }}

復健計畫 Python列表

這裡總結了近日學習python中,列表與元祖的一些基礎知識 列表的結構與基本下標 list 100,45,23 這是乙個簡單的列表,通過list 數字 可以呼叫列表中的元素,與c中的陣列使用方式類似 列表的新增與刪除操作 hello hi hello world earth field univer...

復健計畫 python函式

以下是近期學習的一些知識點總結 函式傳入多個引數 for item in args ls print ls ls2 print ls2 類似於c py中函式允許傳入多個引數,然後通過迴圈呼叫他們並進行處理 傳值處理 python中的引用傳值及其呼叫 對於不可變型別的引數,比如數字字元或者元祖,那麼函...

復健計畫 python中的字典

以下總結了近日學習中python字典的一些基本知識 python中的字典也包括了一系列的類似配對叫做鍵值對,配對的名字叫鍵名,值稱為鍵值,例如 dict 通過dict key1 可以輸出或修改對應的鍵值對 鍵值對的結構案例 bat bat a 阿里巴巴 判斷某個鍵值對是否存在 print b in ...