QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#69346 | #2354. Ook | zhangboju | Compile Error | / | / | C++20 | 4.5kb | 2022-12-26 18:23:07 | 2022-12-26 18:23:09 |
Judging History
你现在查看的是最新测评结果
- [2023-08-10 23:21:45]
- System Update: QOJ starts to keep a history of the judgings of all the submissions.
- [2022-12-26 18:23:09]
- 评测
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2022-12-26 18:23:07]
- 提交
answer
#include<bits/stdc++.h>
using namespace std;
template <typename T> inline void read(T &x)
{
x=0;short f=1;char c=getchar();
for(;c<'0'||c>'9';c=getchar()) if(c=='-') f=-1;
for(;c>='0'&&c<='9';c=getchar()) x=(x<<1)+(x<<3)+(c^48);
x*=f;return;
}
namespace polynomial{
#define poly vector<int>
const int N=4e6+5;
const int mod=998244353,G=3,Gi=332748118;
int r[N];
int qpow(int a,int k)
{
int res=1;
while(k)
{
if(k&1) res=1ll*res*a%mod;
a=1ll*a*a%mod;
k>>=1;
}
return res;
}
int add(int x,int y){return x+y>=mod?x+y-mod:x+y;}
int dec(int x,int y){return x>=y?x-y:x-y+mod;}
void NTT(poly &a,int k,int op)
{
int lg=31-__builtin_clz(k);
for(int i=0;i<k;++i) r[i]=(r[i>>1]>>1)|((i&1)<<(lg-1));
for(int i=0;i<k;++i) if(i<r[i]) swap(a[i],a[r[i]]);
for(int mid=1;mid<k;mid<<=1)
{
int w=qpow(op==1?G:Gi,(mod-1)/(mid<<1));
for(int i=0;i<k;i+=(mid<<1))
{
int wk=1;
for(int j=0;j<mid;++j,wk=1ll*wk*w%mod)
{
int x=a[i+j],y=1ll*wk*a[i+j+mid]%mod;
a[i+j]=(x+y)%mod,a[i+j+mid]=(x-y+mod)%mod;
}
}
}
if(op==-1)
{
int inv=qpow(k,mod-2);
for(int i=0;i<k;++i) a[i]=1ll*(a[i]+mod)%mod*inv%mod;
}
}
poly mul(poly a,poly b)
{
int ed=a.size()+b.size()-1,k=1;
while(k<a.size()+b.size()) k<<=1;
a.resize(k,0),b.resize(k,0);
NTT(a,k,1),NTT(b,k,1);
for(int i=0;i<k;++i) a[i]=1ll*a[i]*b[i]%mod;
NTT(a,k,-1);
while(a.size()>ed) a.pop_back();
return a;
}
void get_inv(poly &f,poly &g,int len)
{
if(len==1) return g[0]=qpow(f[0],mod-2),void();
get_inv(f,g,(len+1)>>1);
int k=1;
while(k<2*len) k<<=1;
g.resize(k,0);
poly c(k);
for(int i=0;i<len;++i) c[i]=f[i];
for(int i=len;i<k;++i) c[i]=0;
NTT(c,k,1);NTT(g,k,1);
for(int i=0;i<k;++i) g[i]=1ll*dec(2,1ll*c[i]*g[i]%mod)*g[i]%mod;
NTT(g,k,-1);
for(int i=len;i<k;++i) g[i]=0;
}
poly inv(poly f,int n)
{
poly invf(n);
f.resize(n,0);
get_inv(f,invf,n);
while(invf.size()>n) invf.pop_back();
return invf;
}
poly R(poly f)
{
poly a=f;
reverse(a.begin(),a.end());
return a;
}
pair<poly,poly> div(poly f,poly g)
{
poly gr=R(g),fr=R(f);
poly invgr=inv(gr,f.size());
poly qr=mul(fr,invgr);
while(qr.size()>f.size()-g.size()+1) qr.pop_back();
poly q=R(qr);
poly res=mul(g,q);
int k=f.size();
poly r(k);
for(int i=0;i<k;++i) r[i]=dec(f[i],res[i]);
while(r.size()&&r.back()==0) r.pop_back();
return {q,r};
}
poly dev(poly f)
{
int k=f.size();
poly g(k);
for(int i=1;i<k;++i) g[i-1]=1ll*f[i]*i%mod;
g[k-1]=0;
return g;
}
poly dev_inv(poly f)
{
int k=f.size();
poly g(k+1);
for(int i=1;i<=k;++i) g[i]=1ll*f[i-1]*qpow(i,mod-2)%mod;
g[0]=0;
return g;
}
poly ln(poly f,int len)
{
poly a=dev(f),b=inv(f,len);
a=mul(a,b);
poly g=dev_inv(a);
return g;
}
void get_exp(poly &f,poly &g,int len)
{
if(len==1) return g[0]=1,void();
get_exp(f,g,(len+1)>>1);
int k=1;
while(k<len*2) k<<=1;
poly d=ln(g,len);
poly e(k,0);
for(int i=0;i<len;++i) e[i]=f[i];
d.resize(k,0),g.resize(k,0);
NTT(g,k,1),NTT(d,k,1),NTT(e,k,1);
for(int i=0;i<k;++i) g[i]=1ll*dec(add(e[i],1),d[i])*g[i]%mod;
NTT(g,k,-1);
for(int i=len;i<k;++i) g[i]=0;
}
poly exp(poly f)
{
int k=f.size();
poly g(k);
get_exp(f,g,k);
return g;
}
poly sqrt(poly f)
{
int k=f.size();
poly t=ln(f,k);
int inv=qpow(2,mod-2);
for(int i=0;i<k;++i) t[i]=1ll*t[i]*inv%mod;
while(t.size()>k) t.pop_back();
poly g=exp(t);
return g;
}
poly qpow(poly f,int k)
{
int n=f.size();
poly g=ln(f,n);
for(int i=0;i<n;++i) g[i]=1ll*g[i]*k%mod;
poly t=exp(g);
return t;
}
}
using namespace polynomial;
#define ll long long
int o,k;
int n,m;
char s[N],t[N];
int cnt[N];
int so[N],sk[N];
ll f[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin>>o>>k>>s+1>>t+1;
n=strlen(s+1),m=strlen(t+1);
for(int x:{0,1})
{
poly A(n+1,0),B(m+1,0);
for(int i=1;i<=n;++i) A[i]=s[i]!=(x?'o':'k');
for(int i=1;i<=m;++i) B[i]=t[m-i+1]!=(x?'o':'k');
A=mul(A,B);
for(int i=0;i<=n-m;++i)
cnt[i+1]+=A[m+i+1];
}
for(int i=1;i<=n;++i) so[i]=so[i-1]+(s[i]=='o');
for(int i=1;i<=n;++i) sk[i]=sk[i-1]+(s[i]=='k');
ll ans=0,lst=0;
for(int i=m;i<=n;++i)
{
ll res=1ll*o*(so[i]-so[i-m])+1ll*k*(sk[i]-sk[i-m]);
int t=m-cnt[i-m+1];
if(t>35) res=0;
else while(t--) res/=2;
f[i]=lst+res;
ans=max(ans,f[i]);
lst=max(lst,f[i-m+1]);
}
cout<<ans<<endl;
}
Details
answer.code: In function ‘int main()’: answer.code:184:18: error: no match for ‘operator>>’ (operand types are ‘std::basic_istream<char>::__istream_type’ {aka ‘std::basic_istream<char>’} and ‘char*’) 184 | cin>>o>>k>>s+1>>t+1; | ~~~~~~~~~^~~~~ | | | | | char* | std::basic_istream<char>::__istream_type {aka std::basic_istream<char>} In file included from /usr/include/c++/11/sstream:38, from /usr/include/c++/11/complex:45, from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from answer.code:1: /usr/include/c++/11/istream:168:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 168 | operator>>(bool& __n) | ^~~~~~~~ /usr/include/c++/11/istream:168:7: note: conversion of argument 1 would be ill-formed: answer.code:184:21: error: cannot bind non-const lvalue reference of type ‘bool&’ to a value of type ‘char*’ 184 | cin>>o>>k>>s+1>>t+1; | ~^~ In file included from /usr/include/c++/11/sstream:38, from /usr/include/c++/11/complex:45, from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from answer.code:1: /usr/include/c++/11/istream:172:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match) 172 | operator>>(short& __n); | ^~~~~~~~ /usr/include/c++/11/istream:172:7: note: conversion of argument 1 would be ill-formed: answer.code:184:21: error: invalid conversion from ‘char*’ to ‘short int’ [-fpermissive] 184 | cin>>o>>k>>s+1>>t+1; | ~^~ | | | char* answer.code:184:21: error: cannot bind rvalue ‘(short int)(((char*)(& s)) + 1)’ to ‘short int&’ In file included from /usr/include/c++/11/sstream:38, from /usr/include/c++/11/complex:45, from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from answer.code:1: /usr/include/c++/11/istream:175:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 175 | operator>>(unsigned short& __n) | ^~~~~~~~ /usr/include/c++/11/istream:175:7: note: conversion of argument 1 would be ill-formed: answer.code:184:21: error: invalid conversion from ‘char*’ to ‘short unsigned int’ [-fpermissive] 184 | cin>>o>>k>>s+1>>t+1; | ~^~ | | | char* answer.code:184:21: error: cannot bind rvalue ‘(short unsigned int)(((char*)(& s)) + 1)’ to ‘short unsigned int&’ In file included from /usr/include/c++/11/sstream:38, from /usr/include/c++/11/complex:45, from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from answer.code:1: /usr/include/c++/11/istream:179:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match) 179 | operator>>(int& __n); | ^~~~~~~~ /usr/include/c++/11/istream:179:7: note: conversion of argument 1 would be ill-formed: answer.code:184:21: error: invalid conversion from ‘char*’ to ‘int’ [-fpermissive] 184 | cin>>o>>k>>s+1>>t+1; | ~^~ | | | char* answer.code:184:21: error: cannot bind rvalue ‘(int)(((char*)(& s)) + 1)’ to ‘int&’ In file included from /usr/include/c++/11/sstream:38, from /usr/include/c++/11/complex:45, from /usr/include/c++/11/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54, from answer.code:1: /usr/include/c++/11/istream:182:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match) 182 | operator>>(unsigned int& __n) | ^~~~~~...