2020牛客多校聯賽第六場(CBEK)

2021-10-08 18:05:30 字數 2357 閱讀 7785

輸出4.50000000

一列一列的去找,因為兩列合併時:

即合併之後的值處於兩者之間不超過較大值,那麼就沒有合併的意義了,一列一列的更新最大值。

因為分母是選取的子矩陣的最後一行,因此可以擴大分子,即從第一行開始加到子矩陣末尾。

#include

using

namespace std;

typedef

long

long ll;

intmain()

}for

(ll i=

0;iprintf

("%.8lf\n"

,s);

}return0;

}

看樣例可得:

,只需要求一次2的逆元就夠了

****於以下部落格:

#include

using

namespace std;

#define int long long

#define ll long long

int a[

5000100

],cnt[

5000100];

bool vis[

5000100];

unordered_map mp,mp2;

signed

main()

if(flag1) cout<<

"no"

<

else cout<<

"yes"

<

}else

}bool flag1=0;

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

(int i=

1;i<=n;i++

)else

// cout/ cout

(num) vis[cnt[i]]=

1;if(a[i]

>k) flag1=1;

// cout

}for

(int i=n-k+

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

(num)

//cout/ for(auto i:mp) cout

bool flag=0;

for(

int i=

0;i<=k-

1;i++)if

(!vis[i]

) flag=1;

if(!vis[cnt[k]

]) flag=1;

if(flag&&

!flag1) cout<<

"yes"

<

else cout<<

"no"

<

return0;

}

牛客多校第六場

d 題意感覺說的不是很清楚,一開始題意弄錯了,以為是最優的方案,結果是對於每個盒子這個 so clever 的人的做法是優先選擇盡可能大的物品裝完乙個盒子,我就不知道這個人 聰明了。思路 賽後知道題意後,5分鐘寫完,瞎暴力就一發過了,我自己都有點出乎意料真水了。includeusing namesp...

2020牛客多校第六場 K

題意 判斷給的序列是不是 任意1 n的全排拼接成序列的連續子串行 每乙個數字應該屬於的地方它只能出現一次。從任意點i開始,如果某個點在往後查詢的時候出現了兩次,那麼i點最多能夠延伸到那個地方。然後我們可以把每個點求一下最多能延伸到哪個點,直接記錄len。操作看 處理 由於k很大,可以到1e9,但是n...

2019牛客多校第六場C(PAM)

傳送門 不會pam,建議看一下該部落格pam 維護乙個陣列,表示節點對於答案的貢獻 那麼如何計算這個值呢,首先我們需要知道它是由誰轉移而來的,比如該節點表示的是aabbbbaa,他是由abbbba轉移而來的,我們在計算aabbbbaa時首先要加上abbbba,然後還有一些fail邊連向的點首先我們來...