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

2021-10-09 05:48:30 字數 2988 閱讀 2236

總結:

這次做的不好,爆零了,雖然確實本場題比較難,但是沒做出來確實問題很大,考慮問題不夠全面仔細。kg

待定給出n對數字a,b。有三種操作。第一種,什麼也不做。第二種,如果ai在在前面沒有被選過,可以選擇ai。第三種,如果bi在前面沒有被選過,可以選擇bi。

求最多可以選擇多少種不同的數字。

對數字進行離散化,若兩數分在一組,中間連一條邊。對於每條邊只能選其中乙個端點。如果不成環,則有乙個點不會被選到。若成環,連通圖中的每乙個點都可以被選擇。用vis陣列判斷是否成環。

#include.h>

using namespace std;

#define io ios:

:sync_with_stdio

(false

),cin.

tie(0)

;#define ll long long

#define inf 0x3f3f3f3f

const int n

=1e5+5

;//setb;

//set::iterator it;

const int m

=2e5+10

;int a[n]

,b[n

],c[m]

,vis[m]

,f[m];

int find

(int p)

void

merge

(int x,int y)

f[tx]

=ty;

if(vis[tx]

) vis[ty]

=true;}

int main()

len=j;

sort

(c,c+len)

; len=

unique

(c,c+len)

-c;for

(i=0

;i) ans=len;

for(i=

0;i) cout<<

"case #"

<<

++ca<<

": "

<}return0;

}

給出每種菜品的利潤以及碟數,要求我們給每個客人至少一碟菜,要求從1號菜品開始給,給的菜品的號碼是連續的,每個客人同號碼的菜都只能給一碟。求能招待客人的最大數量以及在客人最多的情況下能獲得的最大利潤。

解題思路:

1.首先,因為要求從1號菜品開始給,所以能招待的客人的最大數量就是1號菜品的碟數。

2.用結構體記錄1-x號菜品各一碟可以獲得的利潤以及x的位置,後續按照利潤從大到小的順序對結構體進行排序。

3.給客人的菜一定是1-x各一盤這種情況,可以用乙個time陣列對能夠上幾次1-x的菜進行計數,time[x]即1-x中b[x]的最小值。

4.對結構體排序之後進行遍歷,每次用最大的利潤乘以相應的time陣列值,再模擬該操作對其他菜品的影響,多次相加之後得到答案。

#include 

#include

#include

using namespace std;

struct noide[

100005];

bool cmp

(struct noid a,struct noid b)

//輸入

inline __int128 read()

while

(isdigit

(ch))x

=(x<<3)

+(x<<1)

+(ch^48)

,ch=

getchar()

;return w?-x

:x;}

//輸出

inline void

print

(__int128 x)

if(x>9)

print

(x/10);

putchar

(x%10

+'0');

}int main()

for(j=

1;j<=n;j++

)sort

(e+1

,e+1

+n,cmp)

;//對利潤進行排序

nowt=

0;now=

100005

;for

(j=1

;j<=n;j++)if

(i==t)

else

}return0;

}

定義一張牌有四個屬性,分別為大小,形狀,陰影和顏色,乙個集合包含三張牌,並且每個集合中對於所有牌的某種屬性,要麼完全相同要麼完全不同,問你在給定的n張牌裡面有沒有滿足條件的三張牌能夠構成乙個集合,若某張牌的某一屬性為『*』,說明該屬性為任意值(俗稱賴子)。

暴力模擬o(n^3)能過,但是比賽的時候感覺題幹很長就放棄了,賽後看到這個題好像是去年上海的一道改編,順便也看了一下。

#include .h>

using namespace std;

string s[

300][5

];bool judge

(int i, int j, int k)

return flag;

}int main()

}//cout << s[i][1] << " " << s[i][2] << " " << s[i][3] << " " << s[i][4] << '\n';

} bool flag =

false

;for

(int i =

1; i <= n;

++i)}if

(flag)

break;}

if(flag)

break;}

if(!flag)

printf

("case #%d: -1\n"

,++cas);}

return0;

}

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

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

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

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

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

目錄傳送門 solvedab cdef ghij k5 11o o o o o對時間分治,線段樹維護可撤銷並查集的模板題。這樣可以直接維護每乙個時刻的連通性,我們只需要求出當前連通塊的個數 雙方孤立的點數即可得出答案。所以在增 添邊時維護一下點的度數和孤立點數即可。code author heyuh...