QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#666991#9463. 基础 ABC 练习题WrongAnswer_900 0ms0kbC++236.7kb2024-10-22 20:40:512024-10-22 20:41:00

Judging History

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

  • [2024-10-22 20:41:00]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:0kb
  • [2024-10-22 20:40:51]
  • 提交

answer

#include<bits/stdc++.h>
#define ull unsigned long long
#define ui unsigned int
#define ld long double
#define ll long long
#define lll __int128
#define fi first
#define se second
#define e emplace
#define eb emplace_back
#define db double
#define ef emplace_front
#define pii pair<int,int>
#define pll pair<ll,ll>
#define vi vector<int>
#define vp vector<pii>
#define vt vector<tup>
#define all(x) x.begin(),x.end()
#define mp make_pair

#define FastI
#define FastO
//#define int ll
bool ST;
static const ll MOD=998244353,Phi=998244352,inv2=499122177,Root=3,iRoot=332748118;
static const ll inf=1073741823,Inf=4294967296,INF=4557430888798830399;
static const ld eps=1e-9,pi=3.1415926535;
char in[1<<20],*p1=in,*p2=in;
char out[1<<20],*p3=out;
using namespace std;
struct tup
{
	int x,y,z;
	tup(int X=0,int Y=0,int Z=0)
	{x=X,y=Y,z=Z;}
};
#ifdef FastI
#define getchar() (p1==p2&&(p2=(p1=in)+fread(in,1,1<<20,stdin),p1==p2)?EOF:*p1++)
#endif
#ifdef FastO
#define putchar(x) (p3-out==1<<20?fwrite(out,1,1<<20,stdout),p3=out,0:0,*p3++=x)
#define puts(x) write(x,'\n')
#endif
namespace FastIO
{
	template<typename T> inline void write(T x,char ch=' ')
	{
		if(is_same<char,T>::value)putchar(x);
		else
		{
			if(x<0)x=-x,putchar('-');
			static char st[25];
			int top=0;
			do st[top++]=x%10+'0',x/=10;while(x);
			while(top)putchar(st[--top]);
		}
		ch!='~'?putchar(ch):0;
	}
	inline void write(const char*x,char ch=' ')
	{
		for(int i=0;x[i]!='\0';++i)putchar(x[i]);
		ch!='~'?putchar(ch):0;
	}
	inline void read(char&s){do s=getchar();while(s=='\n'||s==' ');}
	inline void read(char s[])
	{
		int len=0;char st;
		do st=getchar();while(st=='\n'||st==' ');
		s[++len]=st,st=getchar();
		while(st!='\n'&&st!=' '&&st!='\r')s[++len]=st,st=getchar();
		s[++len]='\0';
	}
	template<typename T> inline void read(T &s)
	{
		char ch=getchar();s=0;
		while((ch>'9'||ch<'0')&&ch!='-')ch=getchar();
		bool tf=(ch=='-'&&(ch=getchar()));
		while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+ch-'0',ch=getchar();
		s=tf?-s:s;
	}
	inline void edl(){putchar('\n');}
	template<typename T1,typename T2> inline void read(pair<T1,T2> &s){read(s.fi),read(s.se);}
	template<typename T,typename...Args> inline void write(T x,Args...args){write(x,'~'),write(args...);}
	template<typename T,typename...Args> inline void read(T&x,Args&...args){read(x),read(args...);}
	#ifdef FastO
	struct Writer{~Writer(){fwrite(out,1,p3-out,stdout);}}Writ;
	#endif
}
using namespace FastIO;
namespace MTool
{
	inline int Cadd(int a,int b){return (ll)a+b>=MOD?(ll)a+b-MOD:a+b;}
	inline int Cdel(int a,int b){return a-b<0?a-b+MOD:a-b;}
	inline int Cmul(int a,int b){return 1ll*a*b%MOD;}
	inline int sqr(int a){return 1ll*a*a%MOD;}
	inline void Madd(int&a,int b){a=((ll)a+b>=MOD?(ll)a+b-MOD:a+b);}
	inline void Mdel(int&a,int b){a=(a-b<0?a-b+MOD:a-b);}
	inline void Mmul(int&a,int b){a=1ll*a*b%MOD;}
	inline int Cmod(int x){return (x%MOD+MOD)%MOD;}
	inline void Mmod(int&x){x=(x%MOD+MOD)%MOD;}
	template<typename T> inline bool Mmax(T&a,T b){return a<b?a=b,1:0;}
	template<typename T> inline bool Mmin(T&a,T b){return a>b?a=b,1:0;}
	template<typename...Args> inline void Madd(int&a,int b,Args...args){Madd(a,b),Madd(a,args...);}
	template<typename...Args> inline void Mmul(int&a,int b,Args...args){Mmul(a,b),Mmul(a,args...);}
	template<typename...Args> inline void Mdel(int&a,int b,Args...args){Mdel(a,b),Mdel(a,args...);}
	template<typename...Args> inline int Cadd(int a,int b,Args...args){return Cadd(Cadd(a,b),args...);}
	template<typename...Args> inline int Cmul(int a,int b,Args...args){return Cmul(Cmul(a,b),args...);}
	template<typename...Args> inline int Cdel(int a,int b,Args...args){return Cdel(Cdel(a,b),args...);}
	template<typename...Args,typename T> inline bool Mmax(T&a,T b,Args...args){return Mmax(a,b)|Mmax(a,args...);}
	template<typename...Args,typename T> inline bool Mmin(T&a,T b,Args...args){return Mmin(a,b)|Mmin(a,args...);}
	inline int power(int x,int y){int s=1;for(;y;y>>=1,Mmul(x,x))if(y&1)Mmul(s,x);return s;}
}
using namespace MTool;
namespace WrongAnswer_90
{
	int n;
	char s[200],s1[70],s2[70];
	int _X[3],X[3];
	namespace chk
	{
		inline void solve()
		{
			for(int i=0;i<=n;++i)if(s1[i+1]=='1')
			{
				for(int j=0;j+i<=n;++j)if(s2[j+1]=='1')
				{
					_X[0]=i,_X[1]=j,_X[2]=n-i-j;
					X[0]=X[1]=X[2]=0;
					int fl=1;
					for(int k=1;k<=3*n;++k)
					{
						int v=s[k]-'A';
						++X[v];
						fl&=X[v]-_X[v]<=X[(v+2)%3];
					}
					if(fl)return puts("1");
				}
			}
			puts("0");
		}
	}
	namespace BF
	{
		ui f[61][61][61];
		inline int solve(int l1,int r1,int l2,int r2)
		{
//			cerr<<l1<<" "<<r1<<" "<<l2<<" "<<r2<<endl;
			if(r1+r2>n)return 0;
			_X[0]=l1;
			_X[1]=l2;
			_X[2]=n-r1-r2;
			memset(f,0,sizeof(f));
			f[0][0][0]=1;
			for(int k=0;k<3*n;++k)
			{
				if(s[k+1]=='?')
				{
					for(int x=0;x<=min(n,k);++x)
					{
						for(int y=0;x+y<=k&&y<=n;++y)if(f[x][y][k-x-y])
						{
							if(x+1-l1<=k-x-y)
							f[x+1][y][k-x-y]+=f[x][y][k-x-y];
							
							if(y+1-l2<=x)
							f[x][y+1][k-x-y]+=f[x][y][k-x-y];
							
							if(k-x-y+1-n+r1+r2<=y)
							f[x][y][k-x-y+1]+=f[x][y][k-x-y];
						}
					}
				}
				else
				{
					for(int x=0;x<=min(n,k);++x)
					{
						for(int y=0;x+y<=k&&y<=n;++y)if(f[x][y][k-x-y])
						{
							int ch=s[k+1]-'A';
							X[0]=x,X[1]=y,X[2]=k-x-y;
							++X[ch];
							if(X[ch]-_X[ch]<=X[(ch+2)%3])
							f[X[0]][X[1]][X[2]]+=f[x][y][k-x-y];
						}
					}
				}
			}
			return f[n][n][n];
		}
		inline void solve()
		{
			if(n!=60)return puts("-1"),void();
			vi ve1,ve2;
			for(int i=0;i<=n;++i)
			{
				if(s1[i+1]-'0')ve1.eb(i);
				if(s2[i+1]-'0')ve2.eb(i);
			}
			
			ui ans=0;
			for(int l1=0;l1<(int)ve1.size();++l1)
			{
				cerr<<l1<<endl;
				for(int l2=0;l2<(int)ve2.size();++l2)
				{
					ans+=solve(ve1[l1],ve1[l1],ve2[l2],ve2[l2]);
					if(l1<(int)ve1.size()-1)
					ans-=solve(ve1[l1],ve1[l1+1],ve2[l2],ve2[l2]);
					if(l2<(int)ve2.size()-1)
					ans-=solve(ve1[l1],ve1[l1],ve2[l2],ve2[l2+1]);
					if(l1<(int)ve1.size()-1&&l2<(int)ve2.size()-1)
					ans+=solve(ve1[l1],ve1[l1+1],ve2[l2],ve2[l2+1]);
				}
			}
			write(ans,'\n');
		}
	}
	inline void Mian()
	{
		int T=1,C;
		read(T,C);
		while(T--)
		{
			read(n);
			read(s1);
			read(s2);
			read(s);
//			if(C<=2)chk::solve();
//			else
			BF::solve();
		}
	}
}
bool ED;
signed main()
{
//	ios::sync_with_stdio(0);
//	freopen("1.in","r",stdin);
//	freopen("1.out","w",stdout);
	double st=clock();
	WrongAnswer_90::Mian();
	double ed=clock();
 	cerr<<endl;
 	cerr<<"Time: "<<ed-st<<" ms\n";
 	cerr<<"Memory: "<<abs(&ST-&ED)/1024.0/1024.0<<" MB\n";
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Time Limit Exceeded

Test #1:

score: 0
Time Limit Exceeded

input:

60 1
1
11
11
ABC
2
111
111
CABABC
3
1111
1111
CAABBCBAC
4
11111
11111
BACBBACBACAC
5
111111
111111
CABCCBBAABCCBAA
6
1111111
1111111
ABABABCACBCBCCACBA
7
11111111
11111111
BCAABACBBCBBABCCAACAC
8
111111111
111111111
CCBCBBBCAABCBCAAAAACBCBA
9
1111111111
1111111111
CCCCACABCBABAABCCAABABBCBBA
10
1111...

output:


result:


Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Time Limit Exceeded

Test #22:

score: 0
Time Limit Exceeded

input:

60 3
1
11
11
???
2
111
111
??????
3
1111
1111
?????????
4
11111
11111
????????????
5
111111
111111
???????????????
6
1111111
1111111
??????????????????
7
11111111
11111111
?????????????????????
8
111111111
111111111
????????????????????????
9
1111111111
1111111111
???????????????????????????
10
1111...

output:


result:


Subtask #4:

score: 0
Skipped

Dependency #1:

0%

Subtask #5:

score: 0
Skipped

Dependency #1:

0%