轉化為圖論模型來解決問題。把給定二元組當作一條邊,那麼顯然,如果對於乙個連通塊如果其是一棵樹,那麼就會給答案增加這個連通塊大小-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 然後...