洛谷 SDOI2016 遊戲

2021-10-23 16:13:57 字數 2285 閱讀 7129

初見安~這裡是傳送門:洛谷p4069 [sdoi2016]遊戲

這題真的是咕了好幾個月了終於過了,然後又咕了幾個星期才來寫部落格……

題意很簡單,每次讓你在一條路徑上放乙個等差數列,問你某點上數的最小值。

這就是乙個李超線段樹的模板題了。我們樹上利用樹剖開一棵線段樹,維護每一段等差序列的最小值就好。

接下來看這一段一段的等差序列(直線)。

樹上路徑的經典性質——拆分成兩段,

首先看前一段,設我們樹剖的dfn序號是從上往下的,所以要反過來,所以這個等差序列應為:

也就是說,是個

接下來看後一段

所以兩種情況對應的解析式我們討論出來了,接下來就是插入李超線段樹然後該咋維護咋維護了。

上**——

#include#include#include#include#include#include#define maxn 100005

using namespace std;

typedef long long ll;

const ll inf = 123456789123456789;

int read()

while(isdigit(ch)) x = (x << 1) + (x << 3) + ch - '0', ch = getchar();

return x * f;

}int n, m;

struct edge e[maxn << 1];

int head[maxn], k = 0;

void add(int u, int v, int w) ; head[u] = k++;}

int size[maxn], dep[maxn], son[maxn], fa[maxn], top[maxn], dfn[maxn], raw[maxn], tot = 0;

ll dis[maxn];

struct hld }

void dfs2(int u, int tp) }

int lca(int u, int v)

if(dep[u] > dep[v]) return v; return u;

}}h;

struct tree t[maxn << 2];

void build(int p, int l, int r)

void change(int p, int l, int r, int ls, int rs, ll k, ll b)

ll mx = dis[raw[mid]], pp = (t[p].b - b) / (k - t[p].k);

if(l1 < l2) else

t[p].minn = min(t[p].minn, min(l2, r2));

t[p].minn = min(t[p].minn, min(t[p << 1].minn, t[p << 1 | 1].minn)); return;

} if(ls <= mid) change(p << 1, l, mid, ls, rs, k, b);

if(rs > mid) change(p << 1 | 1, mid + 1, r, ls, rs, k, b);

t[p].minn = min(t[p].minn, min(t[p << 1].minn, t[p << 1 | 1].minn));

}void modify(int u, int v, ll k, ll b)

if(dep[u] > dep[v]) swap(u, v);

change(1, 1, n, dfn[u], dfn[v], k, b);

}ll ask(int p, int l, int r, int ls, int rs)

if(ls <= mid) res = min(res, ask(p << 1, l, mid, ls ,rs));

if(rs > mid) res = min(res, ask(p << 1 | 1, mid + 1, r, ls, rs));

return res;

}ll query(int u, int v)

if(dep[u] > dep[v]) swap(u, v);

return min(ans, ask(1, 1, n, dfn[u], dfn[v]));

}signed main()

return 0;

}

迎評:)

——end——

SDOI2016 硬幣遊戲

題目 翻硬幣遊戲啊 首先對於這類遊戲只要滿足如下的規則,就可以用一種特殊的方式解決了 我們假定只能翻正面朝上的硬幣 我們可以根據某些約束條件的翻硬幣 一次反掉連續幾個,或者具有某些特殊性質的 但是翻掉的硬幣中最右邊的那個比如是從正面反到反面 誰不能翻硬幣了誰輸 對於滿足這樣的特徵的硬幣遊戲,我們有這...

SDOI2016 遊戲題解

這道題太噁心了,調了我整整一晚上,結果發現是乙個bi 錯誤,多多捂臉 這道題比之前的題多了乙個初始化和區間查詢的操作,主要是區間查詢噁心 因為要區間查詢,所以必須維護區間最低點,修改和查詢操作被改得面目全非。我們要維護的話,必須從現值,子值,新值,具體的不好多說 看 吧 include define...

SDOI2016 數字配對

傳送門 裸費用流。建邊 對於a i a j pr ime a j a i frac prime a j a i a j a i prim e a j a i 需要i ii向j n j nj n連,並且j jj向i n i ni n連。費用即為c i c j c i c j c i c j 流量無窮大...