令$f_{i}$(一个集合)表示当第$i$步开始时第0方必胜当且仅当$x\in f_{i}$,初始$f_{n+1}=\{0\}$

当$p_{i}=0$时,$f_{i}=\{x|x\in f_{i+1}或(x\oplus a_{i})\in f_{i+1}\}$;当$p_{i}=1$,$f_{i}=\{x|x\in f_{i+1}且(x\oplus a_{i})\in f_{i+1}\}$

归纳$f_{i}$具有以下性质:若$x,y\in f_{i}$,则$(x\oplus y)\in f_{i}$,如果只有$p_{i}=0$显然满足此性质,考虑当$p_{i}=1$时,对$a_{i}$是否存在于$f_{i+1}$中分类讨论:

1.若$a_{i}\in f_{i+1}$,根据此性质,则有$f_{i}=f_{i+1}$

2.若$a_{i}\notin f_{i+1}$,同样根据此性质,若$(x\oplus a_{i})\in f_{i+1}$,则$a_{i}\in f_{i+1}$,与假设矛盾,因此$f_{i}=\emptyset$

这个性质类似于线性基,因此用线性基来维护$f_{i}$即可,时间复杂度为$o(tn\log_{2}a_{i})$

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 205
4 #define ll long long
5 int t,n,ans;
6 ll a[N],w[N];
7 char s[N];
8 void add(ll k){
9 for(int i=59;i>=0;i--)
10 if (k&(1LL<<i)){
11 if (!w[i])w[i]=k;
12 k^=w[i];
13 }
14 }
15 bool check(ll k){
16 for(int i=59;i>=0;i--)
17 if (k&(1LL<<i)){
18 if (!w[i])return 0;
19 k^=w[i];
20 }
21 return 1;
22 }
23 int main(){
24 scanf("%d",&t);
25 while (t--){
26 scanf("%d",&n);
27 for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
28 scanf("%s",s+1);
29 memset(w,0,sizeof(w));
30 ans=0;
31 for(int i=n;i;i--)
32 if (s[i]=='0')add(a[i]);
33 else{
34 if (!check(a[i])){
35 ans=1;
36 break;
37 }
38 }
39 printf("%d\n",ans);
40 }
41 }

[atAGC045A]Xor Battle的更多相关文章

  1. [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字

    Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...

  2. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  3. 二分+DP+Trie HDOJ 5715 XOR 游戏

    题目链接 XOR 游戏 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  4. BZOJ 2115 【Wc2011】 Xor

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  5. xor和gates的专杀脚本

    前段时间的一次样本,需要给出专杀,应急中遇到的是linux中比较常见的两个家族gates和xor. 首先是xor的专杀脚本,xor样本查杀的时候需要注意的是样本的主进程和子进程相互保护(详见之前的xo ...

  6. Codeforces617 E . XOR and Favorite Number(莫队算法)

    XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...

  7. Xor && 线性基练习

    #include <cstdio> #include <cstring> ; ; int cnt,Ans,b,x,n; inline int Max(int x,int y) ...

  8. BC之Claris and XOR

    http://acm.hdu.edu.cn/showproblem.php?pid=5661 Claris and XOR Time Limit: 2000/1000 MS (Java/Others) ...

  9. Codeforces 738D. Sea Battle 模拟

    D. Sea Battle time limit per test: 1 second memory limit per test :256 megabytes input: standard inp ...

随机推荐

  1. python中对列表的排序

    1.sort()对列表永久性的排序,首字母按照字母表的顺序排列 book=['python','java','c++','web'] book.sort() print(book) 结果如下: 2.向 ...

  2. QQ消算轰炸,我好无聊真的

    from pynput.keyboard import Key,Controller import time from random import choice time.sleep(5) # 创建键 ...

  3. UltraSoft - Beta - Scrum Meeting 1

    Date: May 17th, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 维护Beta阶段文档 Liuzh 前端 增加删除操作按钮 Kkkk 前端 查询增加 ...

  4. mac上安装lua

    一.背景 最近在操作redis的时候,有些时候是需要原子操作的,而redis中支持lua脚本,因此为了以后学习lua,此处记录一下 lua的安装. 二.mac上安装lua 其余的系统上安装lua步骤大 ...

  5. CSS 奇技淫巧 | 巧妙实现文字二次加粗再加边框

    本文将通过一个实际的业务需求,讲解如何实现 极端场景下文字加粗加边框效果 文字多重边框的效果 需求背景 - 文字的二次加粗 今天遇到这样一个有意思的问题: 在文字展示的时候,利用了 font-weig ...

  6. Docker制作能够ssh连接的镜像

    本类文章只作为记录使用 命令操作: #拉取Centos 7 docker pull centos:7 #运行一个镜像 docker run -tdi --privileged centos:7 ini ...

  7. 简明教程 | Docker篇 · 其一:基础入门

    了解Docker Docker是什么 Docker是指容器化技术,用于支持创建和使用 Linux 容器,同时Docker也是软件容器平台. 什么是容器(container) 容器是主机上与其他进程隔离 ...

  8. 热身训练2 GCD

    题目描述 简要题意:  n个数字,a1,a2,...,an m次询问(l,r),每次询问需回答 1.gcd(al,al+1,al+2,...,ar);2.gcd(ax,ax+1,ax+2,...,ay ...

  9. 关于linux下编译的几点知识

    1.-L.-rpath 和 rpath_link的区别 参考博客文章:https://www.cnblogs.com/candl/p/7358384.html (1)-rpath和-rpath-lin ...

  10. 攻防世界 杂项 4.something_in_image

    这是原题 我这里使用编辑器打开,一看乱码也挺多的,于是想了想ctrl+f搜索一下flag关键字吧,结果答案出来了(flag不少,多搜索几次) Flag{yc4pl0fvjs2k1t7T}