題目鏈結
a - all-star game
題意:有n個運動員與m個球迷,現給你n個運動員各自的球迷編號,現在問你若要m名球迷都看比賽,至少需要多少名運動員上場?
滿足球迷看比賽的條件:
(1) 該球迷喜歡的運動員有上場
(2) 球迷i與球迷j都有相同的喜歡球員,則球迷j喜歡運動員k,則球迷i也喜歡運動員k
然後有q次操作,每次操作撤銷或建立x與y的關係,並輸出每次操作後需要的運動員的數量
思路:其實該問題簡化到
給你一張圖,有兩個操作:
(1)刪去圖中原有的一條邊
(2)加上圖中沒的一條邊
詢問圖中聯通塊的個數。
其實這是乙個經典問題,線段樹分治問題,建立乙個時間軸,每次詢問操作按順序就是乙個葉節點,然後為每條邊建立生存時間的起點,終點即可。最後用線段樹查詢,用可撤銷並查集聯通塊維護即可
另一種做法:lct(目前還不會)
e - enigmatic partition#include
using
namespace std;
#define fi first
#define se second
#define lc (rt << 1)
#define rc ((rt << 1) | 1)
typedef
long
long ll;
typedef pair<
int,
int> pii;
const
int maxn =
5e5+50;
int n, m, q;
vector<
int> vec[maxn <<2]
;void
update
(int le,
int ri,
int l,
int r,
int id,
int rt)
int mid =
(le + ri)
>>1;
if(l <= mid)
update
(le, mid, l, r, id, lc);if
(r > mid)
update
(mid +
1, ri, l, r, id, rc);}
mapint> mp;
struct edge
edge[maxn *10]
;int tot =0;
int le[maxn *10]
, ri[maxn *10]
;int ans =
0, sum =0;
struct qnode
stk[maxn *10]
;int top;
int fa[maxn]
, rank[maxn]
;int
find
(int x)
intunit
(int x,
int y)
else}if
(rank[x]
< rank[y]
)swap
(x, y);if
(rank[x]
== rank[y]
) rank[x]++;
fa[y]
= x;
return1;
}void
stkpop()
void
query
(int le,
int ri,
int rt)
if(le == ri)
else
while
(len--)}
intmain
(int argc,
char
const
*ar**)
for(
int i =
1; i <= n; i++))
)]=++tot;
edge[tot]=;
} le[tot]=1
;// 記錄起點}}
for(
int i =
1; i <= q; i++))
)]=++tot;
edge[tot]=;
}int id = mp;
if(le[id]==0
) le[id]
= i;
// 如果這條邊未記錄過,記錄左端點
else
le[id]
= ri[id]=0
;}}for
(int i =
1; i <= tot; i++)}
query(1
, q,1)
;return0;
}
題意:f(n)為滿足以下條件的方案數
(1)a1+
……+a
m=
na_1+……+a_m=n
a1+……
+am
=n(2)a
i<=a
i+
1<=a
i+
1a_i<=a_<=a_i+1
ai<=a
i+1
<=a
i+1
(3)am=
a1+2
a_m=a_1+2
am=a1
+2思路:他人詳細題解
#include
#define ll long long
using
namespace std;
const
int maxn=
1e5+
100;
ll f[maxn<<2]
,pre[maxn<<1]
;int
main()
//直接輸出答案
}
2020牛客暑期多校訓練營(第八場)
題意 給出n對數,對於每一對,其中如果有沒有選過的數那麼就可以選,就可以選擇那乙個數,ans 需要求最大的ans 思路 隊友很強,思路秒出,十分鐘 一發ac可以把這些數對想成一條邊上的兩個點,可以想像一下如果我要最多的選擇這上面的點,假如這些點構成的邊是一棵樹的話,我們最多在這n個點中能選擇的只有n...
2020牛客暑期多校訓練營(第八場)
總結 這次做的不好,爆零了,雖然確實本場題比較難,但是沒做出來確實問題很大,考慮問題不夠全面仔細。kg 待定給出n對數字a,b。有三種操作。第一種,什麼也不做。第二種,如果ai在在前面沒有被選過,可以選擇ai。第三種,如果bi在前面沒有被選過,可以選擇bi。求最多可以選擇多少種不同的數字。對數字進行...
2020牛客暑期多校訓練營(第八場)
目錄傳送門 solvedab cdef ghij k5 11o o o o o對時間分治,線段樹維護可撤銷並查集的模板題。這樣可以直接維護每乙個時刻的連通性,我們只需要求出當前連通塊的個數 雙方孤立的點數即可得出答案。所以在增 添邊時維護一下點的度數和孤立點數即可。code author heyuh...