相當於求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值再丟進佇列...