UOJ#328. 【UTR #3】量子破碎
传送门
学过 \(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】量子破碎的更多相关文章
- 【UTR #3】量子破碎
一道有趣的题. 看到按位的矩阵运算,如果对FWT比较熟悉的话,会比较容易地想到. 这种形式也就FWT等转移里面有吧--就算有其他的也难构造出来. 然而FWT的矩阵并不是酉矩阵(也就是满足 \(AA^T ...
- UWP 应用获取 Localhosts 访问权限
这是一篇教程,写在 win10 版<量子破碎>发售近期. 主要原因:windows 商城的应用下载实在难以忍受...... so 尝试换一个下载环境(f&q)~ 然而使用 ss 并 ...
- 获取 windows 商店内的 aapx 安装包 并 安装(旁加载)
这是一篇教程,写在 win10 版<量子破碎>发售近期. 主要原因:windows 商城的应用下载实在难以忍受...... #######2016-4-9更新####### 4-6号通过旁 ...
- 2000G电脑大型单机游戏合集
激活码 游戏名称(ctrl+F查找) 下载链接005875 艾迪芬奇的记忆 游戏下载链接http://pan.baidu.com/s/1t2PYRAj546_1AcOB-khJZg554158 暗影: ...
- uoj #9. 【UTR #1】vfk的数据 水题
#9. [UTR #1]vfk的数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/9 Description ...
- UOJ #278. 【UTR #2】题目排列顺序(排序水题)
#278. [UTR #2]题目排列顺序 丢个传送门:http://uoj.ac/problem/278 描述 “又要出题了.” 宇宙出题中心主任 —— 吉米多出题斯基,坐在办公桌前策划即将到来的 U ...
- 【UTR #2】[UOJ#278]题目排列顺序 [UOJ#279]题目交流通道 [UOJ#280]题目难度提升
[UOJ#278][UTR #2]题目排列顺序 试题描述 “又要出题了.” 宇宙出题中心主任 —— 吉米多出题斯基,坐在办公桌前策划即将到来的 UOI. 这场比赛有 n 道题,吉米多出题斯基需要决定这 ...
- 【UOJ #280】【UTR #2】题目难度提升
http://uoj.ac/problem/280 非常难想的贪心,用set\(O(nlogn)\). 调了一天qwq. 题解 #include<set> #include<cstd ...
- 【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 ...
随机推荐
- 用xshell ssh连接测试服务器时候出的问题
问题还原:用ssh连接测试服务器 给我结结实实报了个错 FBIwarning: ------------------------------------------------------------ ...
- Flask从入门到精通之flask安装
使用虚拟环境 安装Flask最简单的方式是使用虚拟环境,虚拟环境是python解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局的Python解释器.虚拟环境非常有用,可 ...
- VSCode保存插件配置并使用 gist 管理代码片段
setting sync 保存配置 由于公司和家里都使用 VSCode 作为主要编辑器,同步配置是最紧要的.VSCode 提供了setting sync插件,很方便我们同步插件配置.引用网上教程: 在 ...
- 学习Python中的集合
创建集合 使用工厂方法 set()和 frozenset(): >>> s = set('cheeseshop') >>> s set(['c', 'e', 'h' ...
- python 实现视频的下载以及断点续传
---恢复内容开始--- 一般情况下我们使用爬虫更多的应该是爬数据或者图片吧,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同样 ...
- linux下redis安装步骤
1.官网上下载redis最新包,我下载的是redis-5.0.3.tar.gz,上传至服务器 2.解压缩:tar zxvf redis-5.0.3.tar.gz3.cd redis-5.0.3进入re ...
- JSON 字符串转换为JavaScript 对象.JSON.parse()和JSON.stringify()
使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象: var text = '{ "sites" : [' + '{ &qu ...
- CAS优缺点
cas优点:如一描述在并发量不是很高时cas机制会提高效率.cas缺点:1.cpu开销大,在高并发下,许多线程,更新一变量,多次更新不成功,循环反复,给cpu带来大量压力.2.只是一个变量的原子性操作 ...
- tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了
tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了 感觉它能找到词与词之间的关系,应该可以用来做推荐系统.自动摘要.相关搜索.联想什么的 tensorflow1.1.0 ...
- Spring Security构建Rest服务-1203-Spring Security OAuth开发APP认证框架之短信验证码登录
浏览器模式下验证码存储策略 浏览器模式下,生成的短信验证码或者图形验证码是存在session里的,用户接收到验证码后携带过来做校验. APP模式下验证码存储策略 在app场景下里是没有cookie信息 ...