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個文字串中有多少個可以與當前詢...