[ABC150F] Xor Shift

news/2024/10/6 6:15:43/文章来源:https://www.cnblogs.com/cxqghzj/p/18444492

题意

给定两个序列 \(a, b\),求将 \(b\) 循环移位 \(k\) 位,再给所有 \(b_i \oplus x\),求所有满足条件的 \((k, x)\)

\(n \le 2 \times 10 ^ 5\)

Sol

对于区间异或,容易想到差分。

考虑对 \(a\)\(b\) 分别差分,注意到差分后 \(x\) 直接消失了!

也就是:

  • \(a_0 \oplus a_1 = b_{(0 + k) \mod n} \oplus b_{(1 + k) \mod n}\)
  • \(a_1 \oplus a_2 = b_{(1 + k) \mod n} \oplus b_{(2 + k) \mod n}\)
  • \(a_2 \oplus a_3 = b_{(2 + k) \mod n} \oplus b_{(3 + k) \mod n}\)
  • \(...\)
  • \(a_{n - 1} \oplus a_0 = b_{(n - 1 + k) \mod n} \oplus b_{0} \mod n\)

容易发现映射后的条件的必要性显然,而充分性的条件刚好是 \(x\) 的取值范围。

于是原问题变为字符串匹配模板,直接 \(\texttt{kmp}\) 即可。

Code

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <array>
#include <vector>
#define pii pair <int, int>
using namespace std;
#ifdef ONLINE_JUDGE#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++)
char buf[1 << 23], *p1 = buf, *p2 = buf, ubuf[1 << 23], *u = ubuf;#endif
int read() {int p = 0, flg = 1;char c = getchar();while (c < '0' || c > '9') {if (c == '-') flg = -1;c = getchar();}while (c >= '0' && c <= '9') {p = p * 10 + c - '0';c = getchar();}return p * flg;
}
void write(int x) {if (x < 0) {x = -x;putchar('-');}if (x > 9) {write(x / 10);}putchar(x % 10 + '0');
}
bool _stmer;#define fi first
#define se secondconst int N = 2e5 + 5, inf = 2e9;namespace Kmp {array <int, N * 3> isl;void prefix(vector <int> s, int n) {for (int i = 2; i <= n; i++) {isl[i] = isl[i - 1];while (isl[i] && s[isl[i] + 1] != s[i]) isl[i] = isl[isl[i]];if (s[isl[i] + 1] == s[i]) isl[i]++;}
}} //namespace Kmparray <int, N> s, h;bool _edmer;
int main() {cerr << (&_stmer - &_edmer) / 1024.0 / 1024.0 << "MB\n";int n = read();for (int i = 0; i < n; i++) s[i] = read();for (int i = 0; i < n; i++) h[i] = read();vector <int> str; str.push_back(inf);for (int i = 0; i < n; i++)str.push_back(s[i] ^ s[(i + 1) % n]);str.push_back(inf);for (int i = 0; i < 2 * n; i++)str.push_back(h[i % n] ^ h[(i + 1) % n]);Kmp::prefix(str, str.size() - 1);vector <pii> ans;for (int i = 2 * n + 1; i < (int)str.size() - 1; i++)if (Kmp::isl[i] == n)ans.push_back(make_pair((n - (i - n - 1) % n) % n, h[(i - n - 1) % n] ^ s[0]));sort(ans.begin(), ans.end());for (auto [x, y] : ans) {write(x), putchar(32);write(y), puts("");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/806911.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 275. H 指数 II

1.题目基本信息 1.1.题目描述 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。 h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她…

7、卷积神经网络基础

1、边缘检测示例(Edge Detection Example)卷积运算(convolutional operation)是卷积神经网络最基本的组成部分,使用边缘检测(edge detection)作为入门样例。接下来,你会看到卷积是如何进行运算的。在之前的人脸例子中,我们知道神经网络的前几层是如何检测边缘的,然后…

truffle 和 ganache 打印账号列表和发送eth

打印 ganache环境的账户列表const localhost = "http://127.0.0.1:7545"; const {Web3} = require("web3"); const web3 = new Web3(new Web3.providers.HttpProvider(localhost));web3.eth.getAccounts().then(function (result) {console.log("账户…

前端无代码-表单页面的查看和编辑| uiotos致敬amis、appsmith、codewave、goview、dataroom、iotrouter、FUXA、乐吾乐、dooring等

上位机或管理系统,增删改查属于常规操作。其中以点击以查看和编辑,弹出表单页面,最为常见。 UIOTOS支持页面嵌套、属性继承(包括只读属性)。通过配置和连线,也能对表单页面区分查看和编辑,但有些繁琐。 可以利用容器组件的表单只读属性,勾选后,连线传入表单数据,将只…

前端零代码-技术原理:对话框嵌套和自定义按钮| uiotos致敬amis、appsmith、codewave、goview、dataroom、iotrouter、FUXA、乐吾乐、dooring等

对话框有默认标题头和脚,带有默认的取消、确定、关闭等按钮: 对话框编辑状态和运行状态 UIOTOS中对话框属常见容器,内容由任意其他页面嵌套而来。如下所示: UIOT…

数字经济与新质生产力:地理信息与遥感视角下的深度分析

在数字化浪潮的推动下,我们正见证着生产力的一次历史性飞跃。数字经济如何重塑生产力的三大要素:劳动对象、劳动资料和劳动者?让我们来深度分析数字经济如何推动新质生产力的发展。一、数字经济与地理信息的融合地理信息与遥感技术是数字经济中不可或缺的一环。它们为我们提…

土地资源的可持续管理:探索长期利用的绿色路径

在全球化与城市化的双重驱动下,土地资源的可持续管理已成为保障人类福祉与地球健康的迫切议题。本文将深入剖析实现土地资源长期可持续利用的策略与实践,从理论到实践,全方位探索这条绿色发展的必由之路。一、土地资源的现状与挑战当前,土地退化、耕地减少、城市蔓延、生态…

超轻巧modbus调试助手使用说明

一、使用说明 1.1 数据格式和其他的modbus采集工具一样,本组件也支持各种数据格式,其实就是高字节低字节的顺序。 一般是2字节表示一个数据,后面又有4字节表示一个数据,目前好像还有8字节表示一个数据的设备。 不同厂家的设备对应的字节顺序可能不同,要求可以自定义顺序,…

南沙C++信奥赛陈老师解一本通题 1984:【19CSPJ普及组】纪念品

​【题目描述】小伟突然获得一种超能力,他知道未来 T 天 NN种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。 每天,小伟可以进行以下两种交易无限次: 1.任选一个纪念品,若手上有足够金币,以当日价格购买该…

VMware ESXi 7.0U3q macOS Unlocker OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发布

VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发布VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 7.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Fujitsu (富…

SQL Server 2022 RTM Cumulative Update #15 发布下载

SQL Server 2022 RTM Cumulative Update #15 发布下载SQL Server 2022 RTM Cumulative Update #15 发布下载 最新的累积更新 (CU) 下载,包含自 SQL Server 2022 RTM 发布以来的所有更新。 请访问原文链接:https://sysin.org/blog/sql-server-2022/,查看最新版。原创作品,转…

网站升级中 HTML 代码

网站升级中 HTML 代码效果如图所示:复制以下代码保存为HTML文件上传至WEB目录下直接可用。 `网站正在升级中 \3c br> html { background: linear-gradient(180deg, rgba(0, 95, 247, 1), rgba(3, 142, 240, 1)); height: 100% } \3c br> .box { text-align: center; pos…