Codeforces 817B 模擬 組合數

2021-08-22 16:28:03 字數 1473 閱讀 9757

題目不難理解,就是給你乙個序列,然後讓你找到三個數相乘的最小值,問這有多少種組合情況。明顯一道考組合數的題

思路不難想,但是坑點比較多。

我們先sort排序,然後計算出,最小的有多少個,次小的有多少個,次次小的有多少個。

坑點一,有四種情況:

情況一:最小的個數mi

n1≥ min

1≥

3,那麼ans=c3

min1

c mi

n1

3情況二:最小的個數mi

n1=2

m in

1=

2,那麼an

s=mi

n2a ns

=min

2(次小的個數)

情況三:最小的個數mi

n1=1

m in

1=

1,次小的個數mi

n2≥2

m in

2≥

2,那麼ans=c2

min2

c mi

n2

2情況四:最小的個數mi

n1=1

m in

1=

1,次小的個數mi

n2=1

m in

2=

1,那麼an

s=mi

n3a ns

=min

3(次次小的個數)

坑點二:組合數的計算不能套通式,就是階乘的那個,寫題的時候,傻乎乎的我直接套了個階乘函式,沒看到n的範圍是105105

,105

! 105!

直接爆re

坑點三:結果要開long long,上面再計算組合數的時候,會爆int

#include 

using

namespace

std;

const

int maxn = 1e5 + 10;

int a[maxn];

int main(void)

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

for (k = j + 1; k < n; k++)

long

long ans ;

if (min1 >= 3)

ans = min1 * (min1 - 1ll) * (min1 - 2ll) / 6;

else

if (min1 + min2 >= 3)

else

ans = min3;

printf("%i64d\n", ans);

return

0;}

CODEFORCES 535B 解題報告

仍然是水題,但是還是有可以說的地方。主要思路就是dfs可重排列。4,7組成的幸運數字,在n位數字的構造方式有2 n種,而資料是最多9位,則列舉只有512種,n 2的複雜度足矣。只列舉相應位數的4 7排列,前面的個數用2 n累加。只要遵循先選4再選7即可構造字典順序,然後查詢相應數。以下是 可直接ac...

CodeForces 816B(區間計數)

codeforces 816b 題意 給出n個區間和乙個k值,再給出q次詢問,每次詢問給出乙個區間,要求這個區間中的數在開始的n區間中出現次數不少於k次的數目。解法 將n個區間的每個數每出現一次就加一,最後統計q詢問的區間中不小於k的數的個數。寫這題主要是想講乙個常用的區間更新的方法,其實這題也可以...

Codeforces 965B 題解報告

當k 1時,取第乙個 的座標即可 當k 1時,需要求出每乙個點在上下左右四個方向所能到達的最遠處,記為up,down,left,right,再取上下方向和左右方向的和的最大值,即 max 0,up down k max 0,left right k n,k map int,input split a...