QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#706631 | #8334. Gene | Anneliese# | TL | 0ms | 0kb | C++14 | 2.1kb | 2024-11-03 12:42:58 | 2024-11-03 12:42:59 |
answer
#include<bits/stdc++.h>
using namespace std;
using LL = long long;
using ULL =unsigned long long;
using ll = long long;
const int N = 1005;
const int M = 60010;
#define rep(i,a ,b ) for(int i = a ;i<=b;i++)
#define pre(i,a ,b ) for(int i = a ;i>=b;i--)
pair<int, int> b[N];
vector<pair<int, int> > ans;
int a[N], c[N];
#define pb push_back
int n, q, m, k;
LL P = 131;
string s[505];
ULL h[500][M],p[M];
ULL ht[M];
string t;
ULL get1(int l, int r,int idx) {
return h[idx][r] - h[idx][l - 1] * p[r - l + 1];
}
ULL get(int l, int r) {
return ht[r] - ht[l - 1] * p[r - l + 1];
}
/*
int ch(int idx,int ll,int rr) {
int l = ll -1, r = rr + 1;
while (l + 1 < r) {
int mid = (l + r) / 2;
if (get1(l,r ,idx) == get(l,r)) l = mid;
else r = mid;
}
return l;
}
*/
int ch(int idx, int le, int ri)
{
while (le < ri)
{
int mid = (le + ri) >> 1;
if (get1(le, mid, idx) == get(le, mid)) le = mid + 1;
else ri = mid;
}
if (s[idx][le] == t[le]) return m + 1;
else return le;
}
void solve()
{
cin >> n >> q >> m >> k;
p[0] = 1;
rep(i, 1, m) {
p[i] = p[i - 1 ] * P;
}
rep(i, 1, n) {
cin >> s[i];
s[i] = " " + s[i];
rep(j, 1, m) {
h[i][j] = h[i][j - 1] * P + s[i][j];
}
}
while (q){
int ans = 0;
cin >> t;
t = " " + t;
rep(i, 1, m) {
ht[i] = ht[i - 1] * P + t[i];
}
rep(i, 1, n) {
int cnt = 0;
int idx = ch(i,1,m);
while (idx <= m)
{
cnt++;
if (idx < m) {
idx = ch(i, idx + 1, m);
}
else break;
}
if (cnt <= k) ans++;
}
cout << ans << "\n";
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
srand(time(nullptr));
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
详细
Test #1:
score: 0
Time Limit Exceeded
input:
6 4 4 1 kaki kika manu nana tepu tero kaka mana teri anan
output:
2 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...