一道有趣的题。

看到按位的矩阵运算,如果对FWT比较熟悉的话,会比较容易地想到。

这种形式也就FWT等转移里面有吧……就算有其他的也难构造出来。

然而FWT的矩阵并不是酉矩阵(也就是满足 \(AA^T = I\)),这个很好办,就直接把行列式除到 \(1\) 就好了。

于是得到转移矩阵:

\[A =
\left[
\begin{matrix}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}
\end{matrix}
\right]
\]

我们接下来肯定是要做FWT了,显然,对所有 \(i\) 都做一遍 manipulate(A, i)

得到的东西肯定有性质。我们直接带入FWT的定义式进行展开,得到第 \(i\) 位的值为

\[\left(\frac{1}{\sqrt{2}}\right)^n \left( \left(-1\right)^{|x \cap i|} + \left(-1\right)^{|y \cap i|} \right)
\]

显然,要么这一位为 \(0\),要么为 $ \pm 2 \left(\frac{1}{\sqrt{2}}\right)^n $。

我们考虑不为零的情况,因为只有这样才有用。

\[\begin{align*}
|x \cap i| + |y \cap i| & \equiv 0 \pmod 2\\
|\left(x \cap i\right) \oplus \left(y \cap i\right)| & \equiv 0 \pmod 2\\
|\left(x \oplus y \right) \cap i| & \equiv 0 \pmod 2\\
\end{align*}
\]

于是我们得到了 \(x \oplus y\) 这个定值。这个定值和我们查询得到的 \(i\) 的关系就是交大小为偶数。

那么我们不断FWT然后询问 \(i\),因为答案随机,猜测很快能随机出。

下面有两种做法,要么用异或方程组动态高斯消元,要么暴力。

然后我写的是暴力,具体就是得到一个 \(i\) 就把所有可能满足条件的都标上,直到剩下一个数就是答案。 具体可以用一个bool数组,然后每次and。

但是有一个问题,\(0\) 一直都满足,这样会有两个满足,导致死循环。因为题目保证 \(x \neq y\),所以 \(0\) 一开始就是不可能的。这样就可以唯一确定一个了。

因为期望查询次数为 \(O\left(n\right)\),常数很小(这个我是真的不会算

所以期望询问次数 \(O\left(n^2\right)\),除交互库复杂度 \(O\left(n2^n\right)\) 可以通过此题。

#include "quantumbreak.h"
#include <bits/stdc++.h> const double is2 = 1 / sqrt(2);
double qry[2][2] = {
{is2, is2},
{is2, -is2}
};
int rest, can[1 << 16], iss[1 << 16];
int query_xor(int n, int _) {
const int U = 1 << n;
rest = U - 1;
for (int i = 0; i != U; ++i) {
iss[i] = __builtin_popcount(i) & 1 ^ 1;
can[i] = true;
}
can[0] = false;
while (rest > 1) {
for (int i = 0; i != n; ++i)
manipulate(qry, i);
int x = query();
rest = 0;
for (int i = 0; i != U; ++i)
rest += (can[i] &= iss[i & x]);
}
for (int i = 0; i != U; ++i)
if (can[i])
return i;
}

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

  1. UOJ#328. 【UTR #3】量子破碎

    传送门 学过 \(FWT\) 看到操作 \(2\) 不难可以联想到 \(FWT\) 考虑一遍 \(\oplus\) \(FWT\) 会把 \(a_t\) 变成什么 \(a_t'=((-1)^{bitc ...

  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. unity 实现物体破碎效果的一些方法 - 细雨淅淅

    游戏越来越接近现实的感觉,如果有一个真是的 虚拟现实设备,可能我们真的会感觉是在真实世界.场景的逼真是在渲染效果.角色AI.游戏逻辑.物理效果等等一起导致的结果.现在游戏越来越大,除了渲染,物理估计是 ...

  6. unity 实现物体破碎效果的一些方法

    游戏越来越接近现实的感觉,如果有一个真是的 虚拟现实设备,可能我们真的会感觉是在真实世界.场景的逼真是在渲染效果.角色AI.游戏逻辑.物理效果等等一起导致的结果.现在游戏越来越大,除了渲染,物理估计是 ...

  7. jQuery 特效:盒子破碎和移动动画效果

    今天,我们将创建一个使用 jQuery 制作的非常甜蜜的动画效果.我们的想法是在网站的顶部有小盒子,当一个菜单项被点击时,箱子动画形成的主要内容区域分散在各处.我们会用一些不同的动画效果,我们将为菜单 ...

  8. Unity 实现物体破碎效果(转)

    感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...

  9. 第一部分:IBM量子体验

    (一)量子世界    今天的计算机使用标准的(或用物理学家的话来说,“经典的”)计算模型来执行计算与处理信息,此计算模型要追溯到图灵(Turing)和冯・诺伊曼(Von Neumann)时期.在此模型 ...

随机推荐

  1. mapreduce运行的bug收录

    在8088端口可以看到日志文件(主要看error),操作如下: 1.window jdk版本最好和linux jdk 版本一致,不然容易出现莫名奇妙的bug 之前出现一个bug: Unsupporte ...

  2. WordPress网站搬家数据迁移完整教程

    用本地环境搭建好的WordPress网站在做好之后如何从本地迁移到网络空间或者网络服务器上呢? 首先请确认你在本地建站的时候只做了themes里面的模版文件,如果只是自己改了下模版,那么网站在搬到服务 ...

  3. 一款完美代替微信小程序原生客服消息的工具:

    一.设置:无需开发,多种回复(自动+人工)   自动回复形式有3种: 打开客服消息(用户只要和客服互动过一次,再次点击进入,会收到设置好的自动回复) 关键词回复(用户在小程序中回复某个关键词内容时,会 ...

  4. 磁盘(disk)结构

  5. [转载]java匿名对象

    来源:https://blog.csdn.net/qiaoquan3/article/details/53300248 匿名对象:没有名字的对象:new Car();  //匿名对象其实就是定义对象的 ...

  6. python 字符串前面加r,u的含义

    u/U:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码. 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u:但是中文, ...

  7. 多列表zip合并的csv持久化储存

    有时xpath爬取数据之后会返回多个列表,这些列表的长度一样,这时候可以用zip()合并,然后返回一个zip对象,直接传入储存函数,进行持久化储存 例如: name=['张三','李四','王五'] ...

  8. 帝国cms 遍历某个父栏目下所有的子栏目

    [e:loop={"select * from phome_enewsclass where bclassid in (2) order by classid asc",0,24, ...

  9. 帝国cms 常用标签汇总

    1.列表内容标签 [!--empirenews.listtemp--]<!--list.var1-->[!--empirenews.listtemp--] 2.分页标签 [!--show. ...

  10. iOS用contenteditable滚动时,光标不会刷新定位的处理方法

    分析 iOS的 wkwebview 在滚动时会暂停许多动画,作为优化 解决思路 监听滚动事件,利用文档重绘即可刷新动画 ps:因为滚动有惯性,touchmove事件只能监听到手指松开的那一刻,所以只能 ...