牛客程式設計巔峰賽S1第3場 黃金 鑽石 題解

2022-06-05 17:00:28 字數 1706 閱讀 6312

問給定的\(n+1\)個數中,哪個數出現了兩次。

簽到,直接做。

class solution 

}return ans;

}};

在一顆有 \(n\) 個結點且以 \(1\) 為根節點樹上,起初每個結點的初始權值為 \(0\) 。

現在有 \(q\) 次操作,每次操作選擇將以 \(r_i\)​ 為根節點的子樹上的所有結點權值增加 \(x_i\)​ 。

求 \(q\) 次操作後從 \(1\)到 \(n\) 每個結點的權值。

比較經典的樹上問題。這裡僅丟擲解法,不對**思路進行講解。

\(dfs\)序\(+\)線段樹是老套路了,如果不了解的話可以做一下類似題:

hdu-3974

class solution 

ed[x]=++cnt;

}void pushdown(int l,int r,int rt)

void pushup(int rt)

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

build(lson);

build(rson);

pushup(rt);

}void update(int l,int r,int l,int r,int rt,int val)

if(lazy[rt]!=0)pushdown(l,r,rt);

if(l<=mid)

if(r>mid)

pushup(rt);

}long long query(int l,int r,int l,int r,int rt)

long long ans=0;

if(lazy[rt]!=0)pushdown(l,r,rt);

if(l<=mid)

if(r>mid)

return ans;

}vectorsolve(int n, vector& edge, int q, vector& query) \)​​ 的值與 \(p_\)​​ 的值互換。

\(m\) 對 \((x_i, y_i)\) 的使用順序與次數不限。

牛牛想知道,任意次操作之後他能得到的字典序最小的排列是什麼。

輸入:第乙個引數為 \(n\),\(1\leq n \leq 100,000\)

第二個引數為 \(m\),\(1\leq m \leq 100,000\)

第三個引數為初始排列 \(p\),\(1\leq p_i\leq n\)

第四個引數為 \(m\) 對\((x_i, y_i)\), \(1\leq x_i, y_i\leq n, x_i \neq y_i\)

/*** struct point ;

*/class solution

return fa[x];

}void merge(int x,int y)

}int num[200005];

vectorsolve(int n, int m, vector& perm, vector& pair)

int cnt=0;

for(int i=0;ians;

vectorkep[100005];

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

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

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

return ans;

}};

牛客巔峰賽S1第9場 黃金 鑽石

牛牛的木板 牛牛從牛畢那裡拿了一根長度為n的白木板,木板被等分成了n段 沒有被切割,只是虛擬劃分成了n段 其中有些段被牛畢用顏料染成了黑色。牛牛非常不喜歡黑色,它找來了一桶清洗劑決定對木板進行清洗,但是牛牛發現自己的清洗劑最多只能清洗m段。清洗完後,牛牛會把木板鋸成純色的幾段。例如假設木板是 黑黑黑...

牛客程式設計巔峰賽S1第12場

題目描述 給你乙個含有n個元素的陣列arr i 請你告訴牛牛這個陣列的中位數大還是平均數大,如果中位數更大輸出1,如果平均數更大輸出 1,如果中位數和平均數相等輸出0 示例1輸入 1,3,4 輸出說明 中位數3,平均數約等於2.67,所以輸出1 示例2輸入 7,4,8,11 輸出說明 中位數7.5,...

牛客程式設計巔峰賽S1第4場 黃金 鑽石(總結)

自閉場,有點懷疑這兩年大學刷的題都是白刷了 題意牛牛有n個盤子,兩種型別的蛋糕,數量分別為 a,b。有如下規則 1.乙個盤子只能有一種型別的蛋糕 2.每個盤子都必須有蛋糕 3.蛋糕數量最少的那個盤子要使它的數量盡可能大 也就是使每個盤子數量盡可能平均 題解人傻了,這不是很明顯的二分答案就可以嘛,偏偏...