初見安~這裡是傳送門:洛谷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 流量無窮大...