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

2021-10-08 10:46:35 字數 3903 閱讀 4901

b.boundary(數學)

以乙個點為基礎,暴力列舉另外乙個點就可以,就是算圓心的時候有點廢手。。。

ac**

#include

inline

long

long

read()

while

(c >=

'0'&& c <=

'9')

return x*s;

}using

namespace std;

#define newnode (treenode *)malloc(sizeof(treenode))

#define mem(a,b) memset(a,b,sizeof(a))

#define lowbit(x) (x)&(-x)

const

int n =

2e6+5;

const

long

long infinf =

0x7f7f7f7f7f7f7f

;const

int inf =

0x3f3f3f3f

;const

double eps =

1e-7

;const

int mod =

998244353

;const

double ii =

acos(-

1);const

double pp =

(ii*

1.0)/(

180.00);

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair piil;

mapdouble

,double

>

,ll> mp;

ll max;

void

solve

(double x1,

double y1,

double x2,

double y2,

double x3,

double y3)]++

; max =

max(max,mp)

;}signed

main()

} cout << max+

1<< endl;

}

c.cover the tree(dfs序)

首先得明白題意,所謂的連一條鏈所覆蓋的邊,是指u 到 v 的最短通路。

那麼很顯然是從葉子節點入手連鏈,但是就要想到分配問題,這裡我們利用dfs序來進行連邊

ac**

#include

inline

long

long

read()

while

(c >=

'0'&& c <=

'9')

return x*s;

}using

namespace std;

#define newnode (treenode *)malloc(sizeof(treenode))

#define mem(a,b) memset(a,b,sizeof(a))

#define lowbit(x) (x)&(-x)

const

int n =

2e5+5;

const

long

long infinf =

0x7f7f7f7f7f7f7f

;const

int inf =

0x3f3f3f3f

;const

double eps =

1e-7

;const

int mod =

1e9+7;

const

double ii =

acos(-

1);const

double pp =

(ii*

1.0)/(

180.00);

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair piil;

vector<

int> v[n]

;int arr[n]

,ans;

void

dfs(

int a,

int b)

for(

int i =

0;i < v[a]

.size()

;i++)}

signed

main()

for(

int i =

1;i <= n;i++)if

(v[i]

.size()

>1)

//找到乙個非葉子節點進行dfs

dfs(root,0)

; cout <<

(ans+1)

/2<< endl;

for(

int i =

1;i <=

(ans+1)

/2;i++

) cout << arr[i]

<<

" "<< arr[i+ans/2]

<< endl;

//連鏈分配

}

d.duration

水題:

#include

inline

long

long

read()

while

(c >=

'0'&& c <=

'9')

return x*s;

}using

namespace std;

#define newnode (treenode *)malloc(sizeof(treenode))

#define mem(a,b) memset(a,b,sizeof(a))

#define lowbit(x) (x)&(-x)

const

int n =

1e5+10;

const

long

long infinf =

0x7f7f7f7f7f7f7f

;const

int inf =

0x3f3f3f3f

;const

double eps =

1e-7

;const

int mod =

1e9+7;

const

double ii =

acos(-

1);const

double pp =

(ii*

1.0)/(

180.00);

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair piil;

signed

main()

f.fake maxpooling

單獨寫的部落格

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

時間限制 c c 3秒,其他語言6秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 given n strings s 1,s 2,cdots,s ns1 s2 sn now define f s,t as the maximum i t...

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

c.cover the tree 首先你從以乙個度不為1的點作為根節點。然後你每次都連線乙個葉子節點,這樣顯然是所有的邊都可以被覆蓋。即答案為度為1的點的個數,但是這樣顯然很大,可以優化,可以相當於把根節點當作中間節點,讓葉子節點兩兩相連,顯然答案已經出來了,就是 葉子 1 2 但是怎麼兩兩配對是乙...

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

給你同一天的兩個時刻,請你計算這兩個時刻中間相隔多少秒?注意一下輸入的格式。include includeusing namespace std int main lcm i,j 其中 lcm 是最小公倍數的簡寫 the least common multiple 求每個大小為 k k 的子矩陣的最...