QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#69346#2354. OokzhangbojuCompile Error//C++204.5kb2022-12-26 18:23:072022-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]
  • 评测
  • [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;
}

详细

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)
      |       ^~~~~~...