ABC 250 E
E - Prefix Equality(哈希)
题意
给定两个等长数组a,b,每次询问a的前x个元素组成的集合是否等于b的前y个元素组成的集合
思路
因为它有个限制条件,区间都是[1,x],所以轻松一点,要是询问a的某一段区间与b的某一段区间相等,就不会做了。
直接上哈希,自然溢出。
代码
vector<int> a,b;
vector<ull> ha,hb;
ull q_pow(int a,int b)
{
ull res=1;
while(b)
{
if(b&1) res=res*a;
a=a*a;
b/=2;
}
return res;
}
vector<ull> hash_(vector<int>&a)
{
int len=a.size();
ull h=0;
vector<ull> hash(n);
set<ull> s;
for(int i=0;i<len;i++)
{
if(!s.count(a[i]))
{
s.insert(a[i]);
h+=q_pow(mod,a[i]);
}
hash[i]=h;
}
return hash;
}
void solve()
{
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
a.push_back(x);
}
for(int i=0;i<n;i++)
{
int x;
cin>>x;
b.push_back(x);
}
ha=hash_(a);
hb=hash_(b);
cin>>m;
while(m--)
{
int x,y;
cin>>x>>y;
--x,--y;
if(ha[x]==hb[y]) cout<<"Yes\n";
else cout<<"No\n";
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)