牛客練習賽41

2021-09-11 17:56:24 字數 875 閱讀 3586

相當於求n個點,已知n條邊,組成各個連通分塊,每個連通分塊有乙個和值,求出最大的幾個和值。

用並查集給邊建立聯絡,計算連通塊和是 先找到那個fa點 再給該點加值。

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const ll maxn=1e5+5;

ll n,m;

ll a[maxn],v[maxn],ans[maxn],fa[maxn];

ll get(int x)

int main()

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

ll x;

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

sort(ans+1,ans+n+1);

ll g=0,l=n;

for(ll i=0;i0) g+=ans[l--];

}cout給出兩個球體的球心和半徑,計算兩個球的並。

學會在結構體中計算出物件的所有屬性 dist() 函式放結構體 直接得到。這個公式記住哇!

#include using namespace std;

const double pi = acos(-1);

struct ball

//可去掉上句

double dist(ball a)

double v()

}a,b;

double solve()

int main()

牛客練習賽 41

a.博弈 我們發現 要麼一次拿光,要麼 m 為 1 否則都贏不了 b.dp 思路,因為有負數,如果全負數,最小為 666 300 近似於 21w 所以把錨點設為 210000,dp i j 代表 前 i 個數字 湊夠數字 j 的方案數,dp i j dp i 1 j dp i 1 j a i 但是 ...

牛客網練習賽 41

a 中文題意,直接說思路 可以知道在n m 0 的時候可以全部翻轉完,但當第一次翻轉完之後b使壞一次就永遠也翻不到,所以只有當n m的時候是yes其他都是no include using namespace std int main b 思路 簡單的計數dp,可以設 dp i j 表示的是你在第i輪...

BFS, D 最小相似度,牛客練習賽41,

傳送門 由於m只有20,所以我們知道狀態數一共只有2 20,我們如果能算出每個狀態和給定n個字串相似度的最大值,這道題就解決了。首先我們知道所有n個串最初的dp值為m,通過bfs,把每個串丟進佇列一次,每個串改變每一位得到新的字串,相同位少了乙個 即相似度減一,更新那些沒出現過的串的dp值再丟進佇列...