UOJ#328. 【UTR #3】量子破碎
传送门
学过 FWTFWTFWT 看到操作 222 不难可以联想到 FWTFWTFWT
考虑一遍 ⊕\oplus⊕ FWTFWTFWT 会把 ata_tat 变成什么
at′=((−1)bitcount(x&t)+(−1)bitcount(y&t))axa_t'=((-1)^{bitcount(x\&t)}+(-1)^{bitcount(y\&t)})a_xat′=((−1)bitcount(x&t)+(−1)bitcount(y&t))ax
考虑这个东西 (−1)bitcount(x&t)+(−1)bitcount(y&t)(-1)^{bitcount(x\&t)}+(-1)^{bitcount(y\&t)}(−1)bitcount(x&t)+(−1)bitcount(y&t)
当 bitcount(x&t)bitcount(x\&t)bitcount(x&t) 和 bitcount(y&t)bitcount(y\&t)bitcount(y&t) 同奇偶时才有值
实际上就是 bitcount((x⊕y)&t)bitcount((x\oplus y)\&t)bitcount((x⊕y)&t) 为偶数
而只需要知道互不相关的 nnn 个 ttt 就可以解出 x⊕yx\oplus yx⊕y
并且题目又是随机的,那么期望做 O(n)O(n)O(n) 遍,询问次数期望 O(n2)O(n^2)O(n2)
一个小细节,FWTFWTFWT 矩阵为 A=(111−1)A=\begin{pmatrix}1 & 1 \\ 1 & -1\end{pmatrix}A=(111−1),这玩意儿并不满足 AAT=IAA^T=IAAT=I
但是它满足 AAT(120012)=IAA^T\begin{pmatrix}\frac{1}{2} & 0 \\ 0 & \frac{1}{2}\end{pmatrix}=IAAT(210021)=I
所以只要令 A=(121212−12)A=\begin{pmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}\end{pmatrix}A=(212121−21) 就好了
# 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】量子破碎相关推荐
- [交互][FWT] UOJ #328. 【UTR #3】量子破碎
SolutionSolutionSolution 矩阵 A=[111−1]A=[111−1] A=\left[ \begin{matrix}1 & 1 \\1 & -1 \\ \end ...
- UOJ Test Round 3
A.几何冲刺 感觉自己的智商爆炸. 显然是按照极角序排列之后依次加点,判断是否有点. 保证一个点在两个角的范围内就OK了啊,想了半天叉积... #include "triangles.h&q ...
- 3分钟看完Build2016 Day 1 Keynote
Build 2016 Day 1 Keynote 直播结束,M姐不得不说,没看直播的真心错过了一大波黑科技和充值我软信仰的大好时机,不过别后悔,M姐精选了干货,一次性让你补充信仰.没看的真心会被甩开八 ...
- 一体式计算机内存怎么变大,一体机电脑内存多大合适?
不少用户对电脑的内存大小比较茫然,比如我们会经常听到,有人问 "你的电脑内存是多少?"不少人会回答:"120G.500G". 实际上提问者就是想知道电脑运行内存 ...
- 2kB也能做出好玩的游戏?别惊讶,你一定玩过
3A游戏大作层出不穷,这些游戏画面精美.特效逼真.打斗精彩,这些优点都建立在庞大的游戏体积和高要求的硬件配置上. 国产3A大作<黑神话悟空> <量子破碎>.<GTA5&g ...
- 2016年主机游戏大作全方位预测
2015已经和我们正式告别,而进入2016年,按照惯例我们当然还是要来提前展望这一年里的游戏阵容,看看这当中会有多少让你感兴趣,是否会到时候忙到玩不过来,痛并快乐着来享受这场盛宴. 和一早被称为游戏大 ...
- 计算机保存的游戏,100个G,你的电脑够存吗?盘点世界上最大的几个游戏~
原标题:100个G,你的电脑够存吗?盘点世界上最大的几个游戏~ 天天讨论关于哪个游戏好玩,哪个游戏画面做的好,今天我们就来讨论一下,世界上最大的几款游戏,全部是超过100G的主哟~~ 我这里就总结了7 ...
- 【GDC翻译】在“Control”中学到的程序化破坏系统的经验
0. 介绍 大家好,欢迎来到<从"Control"中学到的程序化破坏系统的经验>. 我的名字是 Johannes Richter,我是 Remedy 的首席特效师. 我 ...
- 《复联4》中这位科学家的理论是时间穿越关键!钢铁侠差点因此拒绝出手 | 剧透预警...
本文授权转载自DeepTech(ID:deeptechchina) 作者 | 半岛铁雄 2019 年 4 月 24 日,<复仇者联盟 4:终局之战>在大陆上映.电影很精彩,而在这之中,钢铁 ...
最新文章
- python注入_python的常见命令注入威胁
- 一文搞懂转置卷积(反卷积)
- centos6.7 64位环境下部署MySQL-5.7.13
- 数据科学| 蛋白向量分析
- python使用正则表达式判别字符串是否以一个大写字符起始而跟随了一些小写字符
- 华月互网获得2012全国十大IDC服务商
- 架构之技术复杂度与业务复杂度
- Datatable转实体 实体转换辅助类
- python把文件中的邮箱分类 保存到相应的文件里面
- ios懒人笔记应用源码
- 工程制图与计算机绘图实训任务书及参考资料,水利工程制图与计算机绘图实训探讨...
- 学弟啊,你代码能不能不要写得这么烂?
- 江南大学物联网工程学院数据库课程实验一作业1实验报告
- Tampermonkey中文文档(部分)
- CCD相机模数转换芯片时序简介
- 单片机c语言 步进电机,步进电机控制(单片机C语言).doc
- 嘀嘀和快的部分城市现异常 乘客叫车异常司机接不到单
- win7 系统下实现音量控制
- Adobe Flash Player 官方离线最新版下载地址
- 7月清北学堂培训 Day 1