題目給出n個點,只有n-1條邊,而且都是連通的,那麼就可以得出是一棵樹。
那就變成了裸的樹剖。
套模板,完事。
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define maxn 300050
struct edge
e[maxn*2];
struct node
tree[maxn*8];
int a[maxn];
int dep[maxn]; //節點深度
int fa[maxn]; //節點父親
int siz[maxn]; //以v為跟的節點數目
int son[maxn]; //v節點的重兒子
int top[maxn]; // v節點的重鏈的頂端
int head[maxn],cnt,pos,n,q; //鄰接表
void addedge(int st,int en)
void inti()
void dfs1(int u,int f,int d)
}}void pushup(int id)
void build(int id,int l,int r)
int mid=(l+r)/2;
build(id*2,l,mid);
build(id*2+1,mid+1,r);
pushup(id);
}void update(int id,int x,int v)
if(l<=x&&x<=mid)
update(id*2,x,v);
else if(midr)
return 1e9;
return min(querymin(id*2,x,y),querymin(id*2+1,x,y));
}void getpos(int u,int sp)
}int findmin(int u,int v)
int main()
dfs1(1,0,0);
getpos(1,1);
build(1,0,pos-1);
while(q--)
else if(s==2)
else}}
return 0;
}
十一屆院賽 K題 志願者好萌哇
題意就不說了.直接考慮dp dp i j k 表示前 i 種物品,選取 j 個使用 k 張優惠券的最小花費。想一想轉移方程就很明顯了 dp i j k min dp i 1 j k min dp i 1 j 1 k p i dp i 1 j 1 k 1 c i 但是要過這個題還要加乙個優化。如何 k...
2020第十一屆藍橋杯7月省賽I題
題目描述 本題思路 這道題,暴力過30 的樣例,拿的了7分的樣子,要全過的話那得dp,寫數學式子分析,找到盡可能減少複雜度的方法。先上暴力 這道題暴力寫應該很容易的 include using namespace std const int n 1e5 10 typedef long long ll...
第十一屆藍橋杯省賽題 解碼
問題描述 小明有一串很長的英文本母,可能包含大寫和小寫。在這串字母中,有很多連續的是重複的。小明想了乙個辦法將這串字母表 達得更短 將連續的幾個相同字母寫成字母 出現次數的形式。例如,連續的 5 個 a,即 aaaaa,小明可以簡寫成 a5 也可能簡寫成 a4a aa3a 等 對於這個例子 hhhe...