2020牛客暑期多校訓練營(第八場)解題報告

2022-05-27 10:15:07 字數 2483 閱讀 3333

轉化為圖論模型來解決問題。把給定二元組當作一條邊,那麼顯然,如果對於乙個連通塊如果其是一棵樹,那麼就會給答案增加這個連通塊大小-1的貢獻、如果是乙個仙人掌,那麼就會給答案增加連通塊大小的貢獻。拿並查集即可維護我們所需的資訊。由於給定二元組的值域比較大,所以需要離散化處理。

#include using namespace std;

#define ll long long

ll input()

#define pii pair #define fr first

#define sc second

#define mp make_pair

const int n=4e5+7;

vectorv;

int getid(ll x)

pii a[n];

int fa[n],rk[n];

int vis[n],loop[n];

int find(int x)

void merge(int x,int y)else }}

int main()

v.clear();

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

sort(v.begin(),v.end()),v.erase(unique(v.begin(),v.end()),v.end());

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

int ans=0;

for(int i=1;i<=v.size();i++)

} printf("case #%d: %d\n",++cas,ans);

}}

求最多人數下的最大盈利。那麼顯然\(b[1]\)就是最大人數。要求最大收益,我們只需要計算\(a[i]\)的字首和,從最大的字首和往前從大到小取就是答案。顯然我們可以用字首的相關科技維護字首最值和索引。本題資料範圍超過了ll,需要使用__int128或者其它語言解決。

#include using namespace std;

#define ll long long

ll input()

#define ll __int128

const int n=1e5+7;

int t[n<<4];

int n;

ll a[n],b[n],sum[n];

ll amx[n],bmi[n];

inline void write(__int128 x)

if(x>9)

write(x/10);

putchar(x%10+'0');

}int main()

string s1[4]=;

string s2[4]=;

string s3[4]=;

string s4[4]=;

string s="";

const int n=300;

struct carda[n];

int mp[10007];

void dfs(int dep,int x,int pos)

if(dep==1)else dfs(dep+1,x*10+a[pos].a,pos);

} if(dep==2)else dfs(dep+1,x*10+a[pos].b,pos);

} if(dep==3)else dfs(dep+1,x*10+a[pos].c,pos);

} if(dep==4)else dfs(dep+1,x*10+a[pos].d,pos);

} }void init(int n)

if(dep==2)

if(dep==3)

if(dep==4)

}}

dfs(1,0,i); }}

int main()}}

int b0=a[i].b,b1=a[j].b,b2;

if(b0==0) b0=rand()%3+1;

if(b1==0) b1=rand()%3+1;

if(b0==b1) b2=b0;

else}}

int c0=a[i].c,c1=a[j].c,c2;

if(c0==0) c0=rand()%3+1;

if(c1==0) c1=rand()%3+1;

if(c0==c1) c2=c0;

else}}

int d0=a[i].d,d1=a[j].d,d2;

if(d0==0) d0=rand()%3+1;

if(d1==0) d1=rand()%3+1;

if(d0==d1) d2=d0;

else}}

if(mp[a2*1000+b2*100+c2*10+d2]!=0)

if(flag==1) break;

}if(flag==1) break;

}if(flag==1) break;

} if(!flag) printf("case #%d: -1\n",++cas);

}}

2020牛客暑期多校訓練營(第八場)

題意 給出n對數,對於每一對,其中如果有沒有選過的數那麼就可以選,就可以選擇那乙個數,ans 需要求最大的ans 思路 隊友很強,思路秒出,十分鐘 一發ac可以把這些數對想成一條邊上的兩個點,可以想像一下如果我要最多的選擇這上面的點,假如這些點構成的邊是一棵樹的話,我們最多在這n個點中能選擇的只有n...

2020牛客暑期多校訓練營(第八場)

總結 這次做的不好,爆零了,雖然確實本場題比較難,但是沒做出來確實問題很大,考慮問題不夠全面仔細。kg 待定給出n對數字a,b。有三種操作。第一種,什麼也不做。第二種,如果ai在在前面沒有被選過,可以選擇ai。第三種,如果bi在前面沒有被選過,可以選擇bi。求最多可以選擇多少種不同的數字。對數字進行...

2020牛客暑期多校訓練營(第八場)

題目鏈結 a all star game 題意 有n個運動員與m個球迷,現給你n個運動員各自的球迷編號,現在問你若要m名球迷都看比賽,至少需要多少名運動員上場?滿足球迷看比賽的條件 1 該球迷喜歡的運動員有上場 2 球迷i與球迷j都有相同的喜歡球員,則球迷j喜歡運動員k,則球迷i也喜歡運動員k 然後...