問給定的\(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.蛋糕數量最少的那個盤子要使它的數量盡可能大 也就是使每個盤子數量盡可能平均 題解人傻了,這不是很明顯的二分答案就可以嘛,偏偏...