QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#762938#5312. Levenshtein DistancehighkjCompile Error//C++141.8kb2024-11-19 17:21:542024-11-19 17:21:55

Judging History

你现在查看的是最新测评结果

  • [2024-11-19 17:21:55]
  • 评测
  • [2024-11-19 17:21:54]
  • 提交

answer

#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
using namespace __gnu_pbds;
using namespace std;
#define pb push_back
#define rep(i,x,y) for(register int i=x;i<=y;i++)
#define rep1(i,x,y) for(register int i=x;i>=y;--i)
#define fire signed
#define il inline
template<class T> il void print(T x) {
	if(x<0) printf("-"),x=-x;
	if (x > 9) print(x / 10);
	putchar(x % 10 + '0');
}
#define ull unsigned long long
int T=1;
const int N=1e5+10;
const int M=32;
int f[M][M+M];
int k;
string s,t;
const int ba=131;
ull ha[N],ha1[N],jc[N];
int n,m;
gp_hash_table<int,int>mp[N];
int lcp(int x,int y) {
	if(mp[x].count(y)) {
		return mp[x][y];
	}
	int l=0,r=min(n-x+1,m-y+1),res=0;
	while(l<=r) {
		int mid=l+r>>1;
		if(ha[x+mid-1]-ha[x-1]*jc[mid]==ha1[y+mid-1]-ha1[y-1]*jc[mid]) l=mid+1,res=mid;
		else r=mid-1;
	}
	mp[x][y]=res;
	return res;
}
int ans[N];
fire main() {
	cin.tie(nullptr)->sync_with_stdio(false);
	jc[0]=1;
	cin>>k;
	cin>>s;
	cin>>t;
	s=" "+s;
	t=" "+t;
	n=s.size()-1;
	m=t.size()-1; 
	rep(i,1,max(n,m)) jc[i]=jc[i-1]*ba;
	rep(i,1,n) ha[i]=ha[i-1]*ba+s[i]-'a'+1;
	rep(i,1,m) ha1[i]=ha1[i-1]*ba+t[i]-'a'+1;
	rep(le,1,m) {
		memset(f,0,sizeof f);
		f[0][M]=lcp(1,le);
		rep(nowk,0,k) {
			rep(l,-nowk,nowk) {
				int len1=f[nowk][l+M],len2=len1+l+le-1;
				f[nowk+1][l+M]=max(f[nowk+1][l+M],f[nowk][l+M]+lcp(len1+2,len2+2)+1);
				f[nowk+1][l+M-1]=max(f[nowk+1][l+M-1],f[nowk][l+M]+lcp(len1+2,len2+1)+1);
				f[nowk+1][l+M+1]=max(f[nowk+1][l+M+1],f[nowk][l+M]+lcp(len1+1,len2+2));
			}
		}
		rep(l,max(1-n,-k),min(k,m-le+1-n)) {
			rep(nowk,0,k) {
				if(f[nowk][l+M]>=n) {
					ans[nowk]++;
					break;
				}
			}
		}
	}
	rep(i,0,k) {
//		ans[i]+=ans[i-1];
		printf("%d\n",ans[i]);
	}
	return false;
}

详细

answer.code: In function ‘int lcp(int, int)’:
answer.code:29:18: error: ‘class __gnu_pbds::gp_hash_table<int, int>’ has no member named ‘count’
   29 |         if(mp[x].count(y)) {
      |                  ^~~~~