尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

哈希乱搞:CF1418G Three Occurrences

哈希乱搞:CF1418G Three Occurrences
📅 发布时间:2026/6/20 2:52:22

这道题看起来并不是那么好做,看到题解神秘做法,记录下来。

考虑枚举右端点,统计符合条件的左端点数量。

发现 3 这个数字很小,发现区间中的数我们仅仅需要知道它 %3 的值。

我们如果可以记录一个位置前缀中所有值的出现情况就好了,但是明显不现实,整个数据是 \(n^2\) 级别的。

就算我们搞一棵主席树,似乎也没有什么可以快速确定左端点的方式。

如果我们可以把一大堆数的出现次数压成一坨,并且这一坨还可差分就好了。

想到了集合哈希。

我们给每一个数一个随机值,每个位置的哈希值就是出现次数 %3 乘上随机值。

不难发现两个位置如果哈希值是相等的,那么区间就是合法的。

但是这个办法有一个问题:没有办法保证恰好出现了 3 次。

我们考虑双指针,每次向右移动右端点,维护左端点,显然左端点只会向右。

就没有了↓

点击查看代码
#include <bits/stdc++.h>
#define int long long
#define ull unsigned long long
using namespace std;
const int MN=1e6+116;
int n, a[MN], cnt[MN], ans=0;
unordered_map <int, ull> trans;
map <ull, int> mp;
ull hashed[MN];
signed main(){mt19937_64 rnd(114514);ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>n; for(int i=1; i<=n; ++i) trans[i]=rnd();for(int i=1; i<=n; ++i){hashed[i]=hashed[i-1]; cin>>a[i];hashed[i]-=cnt[a[i]]*trans[a[i]];++cnt[a[i]]; cnt[a[i]]%=3;hashed[i]+=cnt[a[i]]*trans[a[i]];}mp[0]=1; memset(cnt,0,sizeof(cnt));for(int i=1,j=0; i<=n; ++i){++cnt[a[i]];while(cnt[a[i]]>3){--cnt[a[j]];if(j) --mp[hashed[j-1]];++j;}ans+=mp[hashed[i]];++mp[hashed[i]];}cout<<ans<<'\n';return 0;
}

相关新闻

  • 悲伤 自卑 乖戾 独自哭泣 陪伴空虚 kill my memory 让我将痛苦全忘记
  • 工程师的 “指尖实验室”!正点原子 LT1 电桥镊子深度测评:同价位竞品谁能打?
  • 破解跨域监控难题:国标GB28181算法算力平台EasyGBS视频调阅技术在跨域安防监控中的核心应用

最新新闻

  • 2026年6月贵州口碑好的锅炉管品牌找哪家,耐高温吹氧管/大口径精密管/16mn精密管,锅炉管源头厂家哪家权威 - 品牌推荐师
  • 2026上半年滤袋厂家推荐供应商热门排行横评 - 速递信息
  • TV Bro电视浏览器:用遥控器就能畅享大屏上网体验的完美解决方案
  • 2026年苏州手表回收门店排行榜top5 无隐性扣费私密变现优选榜单 - 名奢变现站
  • PostgreSQL 数据迁移实战手册:高效备份与恢复的进阶技巧
  • 掀起波澜: Elastic 被评为 Forrester Wave™ 《2026 年第二季度扩展检测与响应平台》中的强劲表现者

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号