題目傳送門
有乙個 \(n\) 個點組成的樹,有 \(m\) 次操作,每次將 \(1\to x\) 的路徑上每個點都加入乙個顏色為 \(c\) 的小球。但是每個點都有大小限制,即小球個數超過一定量之後就不能再加入了。有 \(q\) 次查詢,問操作完了之後每個點有多少種不同顏色的小球。
sto llsw yyds orz
以下皆為 llsw yyds 的思路,與本人無關。
我們首先可以整體二分出每乙個點在多久會被填滿,然後掃瞄線一波,問題就是如何判斷乙個子樹內不同顏色的個數。這個我們可以直接容斥,就每次加入乙個顏色的時候減掉與之前重複的即可。
時間複雜度 \(\theta(n\log n)\)。
#include using namespace std;
#define maxn 100005
#define int int
template inline void read (t &t)while (c >= '0' && c <= '9') t *= f;}
template inline void read (t &t,args&... args)
template inline void write (t x)if (x > 9) write (x / 10);putchar (x % 10 + '0');}
vector g[maxn];
int n,m,uni,tmpc[maxn];
struct modseq[maxn];
int ind,tur[maxn],ans[maxn],lim[maxn],dfn[maxn],dep[maxn],siz[maxn],par[maxn][21];
void dfs (int u,int fa)
int getlca (int u,int v)
}struct bit_tree
void modify (int x,int v)
int query (int x)
int query (int l,int r)
}tree;
vector qry[maxn];
void solve (vector &tmp,int l,int r)
vector lson,rson;
int mid = (l + r) >> 1;
for (int i = l ? l : 1;i <= mid;++ i) tree.modify (dfn[seq[i].u],1);
for (int u : tmp)
tmp.clear();
solve (rson,mid + 1,r);
for (int i = l ? l : 1;i <= mid;++ i) tree.modify (dfn[seq[i].u],-1);
solve (lson,l,mid);
}set cols[maxn];
void insert (set &s,int u)
signed main()
int q;read (q);
for (int i = 1,x;i <= q;++ i) read (x),write (ans[x]),putchar ('\n');
return 0;
}
1101上午考試T4
題目大意 有 n 輪比賽,最終成績由這 n 輪比賽中贏的輪數決定。如果在第 i 輪比賽賽選擇積極應戰,並且前 i 1 輪比賽中取得了 j 勝的話,那麼第 i 輪比賽的勝率概率為 p i j 這裡我們保證了對於同乙個 i,p i j 關於 j 的上公升保持單調不上公升 也就是說 p i j p i j...
T4模板語法
t4,即4個t開頭的英文本母組合 text template transformation toolkit。t4文字模板,即一種自定義規則的 生成器。根據業務模型可生成任何形式的文字檔案或供程式呼叫的字串。模型以適合於應用程式域的形式包含資訊,並且可以在應用程式的生存期更改 template deb...
T4模板 入門
t4模板作為vs自帶的一套 生成器,功能有多強大我也不知道,最近查詢了一些資料學習一下,做個筆記 更詳細的資料參見 msdn 你必須懂的t4模板 深入淺出 t4模板是沒有顏色高亮提示的,我們可以安裝vs支援的外掛程式,我安裝的是 t4 editor,當然還有其他比如 visual t4等,t4模板分...