F. 十六进制的异或
1.P8736 [蓝桥杯 2020 国 B] 游园安排2.P4341 [BJWC2010] 外星联络3.P4391 [BOI2009] Radio Transmission 无线传输4.P3435 [POI2006] OKR-Periods of Words5.G1. Division + LCP (easy version)6.P1435 [IOI2000] 回文字串7.P4290 [HAOI2008] 玩具取名
8.F. 十六进制的异或
9.D. "a" String Problem10.B. Camp Schedule11.P3805 【模板】manacher12.P4824 [USACO15FEB] Censoring S13.P4555 [国家集训队] 最长双回文串题解
1.异或规则为不进位加法,可以看作位运算
2.查找的时间复杂度必不能高,
2.所以,补齐前缀0,这样就能用字典树了
code
#include <bits/stdc++.h>
using namespace std;
#define ll long long
// Trie数组的定义,大小为2000005*16,适应十六进制字符(0-15)
int trie[2000005][16] = {0};
// id数组,大小与trie数组一致,用于存储每个字符串对应的索引
int id[2000005] = {0};
int cnt = 0; // 节点计数器
int main() {
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
string s;
cin >> s;
int len = s.size();
// 补零操作,确保字符串长度为20
for (int j = 1; j <= 20 - len; j++) s = '0' + s;
int now = 0;
for (int k = 0; s[k]; k++) {
int d;
// 将字符转换为对应的十六进制数值
if (isdigit(s[k])) d = s[k] - '0';
else d = s[k] - 'A' + 10;
// 如果当前节点没有对应的子节点,则创建一个新节点
if (!trie[now][d]) trie[now][d] = ++cnt;
// 移动到下一个节点
now = trie[now][d];
}
// 在最后一个节点存储字符串的索引
id[now] = i;
}
while (q--) {
ll x;
cin >> x;
string s;
// 将十进制数转换为十六进制字符串
while (x) {
int d = x % 16;
char c;
if (d < 10) c = d + '0';
else c = d - 10 + 'A';
// 注意这里是c + s,确保高位在前
s = c + s;
x /= 16;
}
int len = s.size();
// 补零操作,确保字符串长度为20
for (int j = 1; j <= 20 - len; j++) s = '0' + s;
int now = 0;
for (int k = 0; s[k]; k++) {
int d;
// 将字符转换为对应的十六进制数值
if (isdigit(s[k])) d = s[k] - '0';
else d = s[k] - 'A' + 10;
bool found = false; // 标志位,判断是否找到匹配节点
for (int j = 15; j >= 0; j--) {
// 寻找匹配节点,循环从15到0,处理十六进制字符
int next = (j - d + 16) % 16;
if (trie[now][next]) {
now = trie[now][next];
found = true;
break;
}
}
if (!found) { // 如果没有找到匹配节点,则设置now为0并跳出循环
now = 0;
break;
}
}
// 输出找到的字符串的索引,如果没有找到,输出0
cout << id[now] << endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~