牛客練習賽53 ABC

2021-09-28 14:27:21 字數 1265 閱讀 1485

a:簡單dp

#include

#define ll long long

using

namespace std;

const ll mod =

1e9+7;

ll d[

1000000][

2];ll n;

intmain()

cout<<

((d[n][1

]+d[n][0

])%mod)

;return0;

}

b:分塊

#include

#define ll long long

using

namespace std;

const

int n =

3e6+10;

const ll mod =

1e9+7;

ll n, d[n]

, ans;

intmain()

}printf

("%lld\n"

, ans)

;return0;

}

c:富豪凱匹配串

如果暴力求的話複雜度是100030001000,3e9鐵定t,所以我們可以用bitset來優化,bitset是stl的黑科技,可以讓你複雜度除32,所以用了後複雜度9e7,還好穩過。

判q次時,對讀入的每個字串當作二進位制處理,下劃線預設為0,然後存進x,x先取反,然後對y,當當前為下劃線時,是1,所以a[i]^=x,a[i]|=y,如果全是1,則ans++。

#include

#define ll long long

using

namespace std;

const

int n =

1e3+10;

bitset b[n]

, a[n]

;char c[n]

;int n, m, q;

intmain()

scanf

("%d"

,&q)

;while

(q--

) x =

(~x)

;for

(int i =

1; i <= n; i++

)printf

("%d\n"

, ans);}

return0;

}

牛客練習賽51 A B C

前字尾維護字串中b左邊a的個數和b的個數,對於每個b,它能構成的的abc的個數即為它前面a的個數乘以它後面c的個數 include using namespace std define ll long long define inf 0x3f3f3f3f typedef pair int,int p...

牛客練習賽53 B, C, E 題解

b 美味果凍 更換一下列舉順序得到 容易發現 i 為 j,2j 2j,3j t 1 j,t j 時後面向下取整的結果是一樣的,分塊計算即可,j 次冪通過 j 1 次冪 o 1 得到,時間複雜度為 o nlogn include using namespace std typedef long lon...

牛客練習賽53(C題)

題目描述 有n個長度為m的文字串,每個串只含有 0 和 1 接下來有q次詢問,每次給出乙個長度為m的字串,且只含有 0 1 和 如10 1 1。下劃線可以匹配 0 或 1 即10 1 1可以匹配101111,101101,100111,100101四種串。每次詢問求出n個文字串中有多少個可以與當前詢...