传送门

学过 \(FWT\) 看到操作 \(2\) 不难可以联想到 \(FWT\)

考虑一遍 \(\oplus\) \(FWT\) 会把 \(a_t\) 变成什么

\(a_t'=((-1)^{bitcount(x\&t)}+(-1)^{bitcount(y\&t)})a_x\)

考虑这个东西 \((-1)^{bitcount(x\&t)}+(-1)^{bitcount(y\&t)}\)

当 \(bitcount(x\&t)\) 和 \(bitcount(y\&t)\) 同奇偶时才有值

实际上就是 \(bitcount((x\oplus y)\&t)\) 为偶数

而只需要知道互不相关的 \(n\) 个 \(t\) 就可以解出 \(x\oplus y\)

并且题目又是随机的,那么期望做 \(O(n)\) 遍,询问次数期望 \(O(n^2)\)

一个小细节,\(FWT\) 矩阵为 \(A=\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}\),这玩意儿并不满足 \(AA^T=I\)

但是它满足 \(AA^T\begin{pmatrix}\frac{1}{2} & 0 \\ 0 & \frac{1}{2}\end{pmatrix}=I\)

所以只要令 \(A=\begin{pmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}\end{pmatrix}\) 就好了

# include "quantumbreak.h"
# include <bits/stdc++.h>
using namespace std;
typedef long long ll; const double sq(1.0 / sqrt(2)); static vector <int> zero;
static double A[2][2];
static int cnt[1 << 20]; inline int Check(int v, int n) {
int i;
for (i = 0; i < zero.size(); ++i) if (cnt[v & zero[i]] & 1) return 0;
return 1;
} int query_xor(int n, int t) {
int i, j, s = 1 << n, flg = 0;
memset(cnt, 0, sizeof(cnt)), zero.clear();
A[1][1] = -sq, A[0][0] = A[0][1] = A[1][0] = sq;
for (i = 0; i < s; ++i) cnt[i] = cnt[i >> 1] + (i & 1);
for (i = 1; i <= 23; ++i) {
for (j = 0; j < n; ++j) manipulate(A, j);
zero.push_back(query());
}
for (i = 1; i < s; ++i) if (Check(i, n)) return i;
return 233;
}

UOJ#328. 【UTR #3】量子破碎的更多相关文章

  1. 【UTR #3】量子破碎

    一道有趣的题. 看到按位的矩阵运算,如果对FWT比较熟悉的话,会比较容易地想到. 这种形式也就FWT等转移里面有吧--就算有其他的也难构造出来. 然而FWT的矩阵并不是酉矩阵(也就是满足 \(AA^T ...

  2. UWP 应用获取 Localhosts 访问权限

    这是一篇教程,写在 win10 版<量子破碎>发售近期. 主要原因:windows 商城的应用下载实在难以忍受...... so 尝试换一个下载环境(f&q)~ 然而使用 ss 并 ...

  3. 获取 windows 商店内的 aapx 安装包 并 安装(旁加载)

    这是一篇教程,写在 win10 版<量子破碎>发售近期. 主要原因:windows 商城的应用下载实在难以忍受...... #######2016-4-9更新####### 4-6号通过旁 ...

  4. 2000G电脑大型单机游戏合集

    激活码 游戏名称(ctrl+F查找) 下载链接005875 艾迪芬奇的记忆 游戏下载链接http://pan.baidu.com/s/1t2PYRAj546_1AcOB-khJZg554158 暗影: ...

  5. uoj #9. 【UTR #1】vfk的数据 水题

    #9. [UTR #1]vfk的数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/9 Description ...

  6. UOJ #278. 【UTR #2】题目排列顺序(排序水题)

    #278. [UTR #2]题目排列顺序 丢个传送门:http://uoj.ac/problem/278 描述 “又要出题了.” 宇宙出题中心主任 —— 吉米多出题斯基,坐在办公桌前策划即将到来的 U ...

  7. 【UTR #2】[UOJ#278]题目排列顺序 [UOJ#279]题目交流通道 [UOJ#280]题目难度提升

    [UOJ#278][UTR #2]题目排列顺序 试题描述 “又要出题了.” 宇宙出题中心主任 —— 吉米多出题斯基,坐在办公桌前策划即将到来的 UOI. 这场比赛有 n 道题,吉米多出题斯基需要决定这 ...

  8. 【UOJ #280】【UTR #2】题目难度提升

    http://uoj.ac/problem/280 非常难想的贪心,用set\(O(nlogn)\). 调了一天qwq. 题解 #include<set> #include<cstd ...

  9. 【UOJ #279】【UTR #2】题目交流通道

    http://uoj.ac/problem/279 先判断答案为0的情况,\(d(i,i)\neq 0\),\(d(i,j)\neq d(j,i)\),\(d(i,j)>d(i,k)+d(k,j ...

随机推荐

  1. 正则表达式学习之grep,sed和awk

    正则表达式是用于描述字符排列和匹配模式的一种语法,它主要用于字符串的模式分割.匹配.查找以及替换操作. 描述一个正则表达式需要字符类.数量限定符.位置限定符.规定一些特殊语法表示字符类,数量限定符和位 ...

  2. Sql Sever 2012数据库更名失败 error:5030

    打开SQL Server 2012数据库时,对HzWind_2MW数据库名修改为HzWind_2MW_GEM,结果出现如图1所示: 图1 数据库更名时出现error:5030 数据库不能重名名5030 ...

  3. SVN图形客户端上传静态库.a文件失败

    1.原因客户端未添加静态库 2.解决办法 到项目静态库所在目录用命令行添加静态库文件 svn add ****.a 3.可能存在问题 Mac OS的自带SVN版本过低不能添加,报错如下: svn: E ...

  4. 【xsy1116】数学题 奥数题

    真实奥数题 题目大意:给你正整数k$,r$.问你存在多少对$(x,y)$,满足$x<y$且$x^2+y^2=kz^2$,并将所有符合条件的数对输出. 数据范围:$r≤1e9$,$k={1,2,3 ...

  5. POJ 1129

    #include<iostream> #include<stdio.h> #include<string> #define MAXN 60 using namesp ...

  6. AsyncTask的前世今生

    先看下Java Threading Framework的类图:        Callable与Runnable类似,差别在Callable具有返回值,共同点是两个都是执行体,一般都抽象为任务处理. ...

  7. python3 使用 zabbix_client模块

    除了上一篇使用自己定义的函数,我们还可使用pipy提供的zabbix_client模块,这样就不用我们自己去写登录函数,只要在模块开始指定用户名密码即可,方便很多. #!/usr/bin/env py ...

  8. Python单行注释与多行注释

    >>> print "hello,world"hello,world>>> 2+24#单行注释 """每行代码的后 ...

  9. Python中文分词 jieba

    三种分词模式与一个参数 以下代码主要来自于jieba的github,你可以在github下载该源码 import jieba seg_list = jieba.cut("我来到北京清华大学& ...

  10. 阿里云使用镜像安装freepbx

    安装freepbx真的是历经坎坷,不过也收获了一些东西.freepbx可以通过源码安装也可以通过镜像安装.源码安装我们会在另外一篇文章中讲到,这里我们讲到的是镜像安装,在本地进行镜像安装还是比较简单的 ...