提交记录 16390


用户 题目 状态 得分 用时 内存 语言 代码长度
provicy test. 自定义测试 Accepted 100 4.257 ms 24868 KB C++11 2.12 KB
提交时间 评测时间
2021-07-28 13:03:12 2023-09-03 19:41:50
#include <bits/stdc++.h>
//#pragma GCC optimize(3)
//#define int long long
#define ri register
#define mk make_pair
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define is insert
#define es erase
#define vi vector<int>
#define vpi vector<pair<int,int>>
using namespace std;
inline int read()
{
	int s=0, w=1; ri char ch=getchar();
	while(ch<'0'||ch>'9') { if(ch=='-') w=-1; ch=getchar(); }
	while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+(ch^48), ch=getchar();
	return s*w;
} char inp[256];
typedef unsigned long long ull;
const int MN = 400000;
//bool s[MN+1][256];
int wb[MN+1][16];
inline ull myRand(ull &k1, ull &k2) {
    ull k3 = k1, k4 = k2;
    k1 = k4;
    k3 ^= (k3 << 23);
    k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
    return k2 + k4;
}
vector<int> g[16][65536]; int cnt[65536];
inline void gen(int n, ull a1, ull a2) {
    for (ri int i = 1; i <= n; i++)
    {
    	int now=0;
        for (ri int j = 0; j < 256; j++)
        {
            //s[i][j] = (myRand(a1, a2) & (1ull << 32)) ? 1 : 0;
            int du=j/16, pc=j%16;
            if((myRand(a1, a2) & (1ull << 32))) now|=(1<<pc);
            if(j%16==15) g[du][now].pb(i), wb[i][du]=now, now=0;
        }
    }
}
int n,m,lsta; ull a1,a2;
int val[16];
inline void Read()
{
	scanf("%s",inp);
	for(ri int i=0;i<16;i++)
	{
		int now=0;
		for(ri int j=0;j<4;j++)
		{
			int w,k=i*4+j;
			if(inp[k]>='0'&&inp[k]<='9') w=inp[k]-'0';
			else w=inp[k]-'A'+10;
			if(lsta) w^=15;
			for(ri int x=0;x<4;x++) if((w>>x)&1) now|=(1<<(j*4+3-x));
		}
		val[i]=now;
	}
}
signed main()
{
	//freopen("qi.in","r",stdin);
	//freopen("test1.out","w",stdout);
	scanf("%d%d%llu%llu",&n,&m,&a1,&a2);
	gen(n,a1,a2);
	for(ri int i=0;i<65536;i++) cnt[i]=cnt[i>>1]+(i&1);
	for(ri int i=1;i<=m;i++)
	{
		Read(); int lim=read();
		int flg=0;
		for(ri int j=0;j<16;j++)
		{
			for(ri int k=0;k<(int)g[j][val[j]].size();k++)
			{
				int id=g[j][val[j]][k];
				int res=0;
				for(ri int x=0;x<16;x++)
				{
					if(j==x) continue;
					res+=cnt[val[x]^wb[id][x]];
					if(res>lim) break;
				}
				if(res<=lim) { flg=1; break; }
			}
			if(flg) break;
		}
		printf("%d\n",lsta=flg);
	}
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #14.257 ms24 MB + 292 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2024-04-26 01:17:41 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用