結果

問題 No.2540 同値性判定
ユーザー 👑 p-adicp-adic
提出日時 2023-07-29 23:31:16
言語 cLay
(20240714-1)
結果
TLE  
実行時間 -
コード長 1,203 bytes
コンパイル時間 4,074 ms
コンパイル使用メモリ 201,952 KB
実行使用メモリ 82,408 KB
最終ジャッジ日時 2024-10-08 10:41:08
合計ジャッジ時間 10,403 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
10,496 KB
testcase_01 AC 2 ms
5,248 KB
testcase_02 AC 2 ms
5,248 KB
testcase_03 AC 2 ms
5,248 KB
testcase_04 AC 3 ms
5,248 KB
testcase_05 AC 2 ms
5,248 KB
testcase_06 AC 3 ms
5,248 KB
testcase_07 AC 2 ms
5,248 KB
testcase_08 AC 2 ms
5,248 KB
testcase_09 AC 2 ms
5,248 KB
testcase_10 AC 2 ms
5,248 KB
testcase_11 AC 2 ms
5,248 KB
testcase_12 AC 20 ms
5,248 KB
testcase_13 AC 41 ms
5,248 KB
testcase_14 AC 446 ms
10,624 KB
testcase_15 AC 611 ms
73,984 KB
testcase_16 TLE -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
evil_00.txt -- -
evil_01.txt -- -
evil_02.txt -- -
evil_03.txt -- -
evil_04.txt -- -
evil_05.txt -- -
evil_06.txt -- -
evil_07.txt -- -
evil_08.txt -- -
evil_09.txt -- -
evil_10.txt -- -
evil_11.txt -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

// 誤解法(64並列なし、vector<bool>使用)チェック
#pragma GCC optimize("unroll-loops")
vector<bool>T(64,true);vector<bool>F(64,false);
struct U{vector<bool>a,b;bool c;U(vector<bool>A=T,vector<bool>B=F,bool C=false):a(A),b(B),c(C){};};
vector<bool>O(const U&b,const vector<bool>&a){vector<bool>c(64);rep(d,64){c[d]=(b.c?!a[d]:a[d])&b.a[d]|b.b[d];}return c;}
void C(const U&f,U&b){if(f.c){b.a.flip();b.b.flip();b.c=!b.c;swap(b.a,b.b);rep(d,64)b.b[d]=b.b[d]&&b.a[d]&&f.a[d]||f.b[d],b.a[d]=b.a[d]&&f.a[d];}else{rep(d,64)b.a[d]=b.a[d]&&f.a[d],b.b[d]=b.b[d]&&f.a[d]||f.b[d];}}
{
ull@N,@Q,M=1000,h,l,r,x,y,m,n,u;
vector<bool>P[6],A[N],a;
U B[M]={},f;
rep(i,6)rep(d,64)P[i].push_back((d>>i)&1);
rep(i,N)A[i]=P[i%6];
string E="land",o;
rep(Q){
	rd(h,o,l,r,x,y);
	r++;y++;
	a=O(B[h/M],A[h]);
	f=o==E?U(a):U(T,a,o<E);
	m=(l+M-1)/M;
	n=max(m,r/M);
	u=min(m*M,r);
	if(m){rep(i,m*M-M,min(m*M,N))A[i]=O(B[m-1],A[i]);B[m-1]=U();}
	rep(i,l,u)A[i]=O(f,A[i]);
	rep(j,m,n)C(f,B[j]);
	rep(i,n*M,min(n*M+M,N))A[i]=O(B[n],A[i]);
	if(n*M<N)B[n]=U();
	rep(i,max(u,n*M),r)A[i]=O(f,A[i]);
	set<vector<bool>>X;
	o="No";
	rep(i,x,y){
		a=O(B[i/M],A[i]);
		if(X.count(a)){o="Yes";break;}
		X.insert(a);
	}
	wt(o);
}
}
0