YBTOJ:求好元素(哈希表)
文章目录
- 题目描述
- 解析
- 代码
题目描述
解析
如果枚举m,n,p的话是n3的
会超时
但我们注意到右边查询只有O(n)
这就很不平衡
所以考虑把p移到右边,预处理枚举m、n存到哈希表中
查询枚举i、p
这样就把复杂度均摊降到了n2
但是本题数据较强
所以我们得保证哈希表的单词查询复杂度近似于O1
因此我们需要一个1e7左右的质数
此外,还要注意点的个数和边数都应该是n2级,3e7左右
好在本题空间复杂度是比较充裕的
可以通过
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
typedef unsigned long long ull;
const int N = 3e7+100;
const int M=1e7+5;
const ll mod=1e7+3;
int n;
int a[5050];
int fi[M],cnt=-1;
int num[N],tot=0;
struct node{int to,nxt;
}p[N];
void addline(int x,int y){p[++cnt]=(node){y,fi[x]};fi[x]=cnt;
}
bool find(int x){int o=x%mod;if(o<0) o+=mod;for(int i=fi[o];~i;i=p[i].nxt){int to=p[i].to;if(num[to]==x) return true;}return false;
}
void put(int x){int o=x%mod;if(o<0) o+=mod;num[++tot]=x;addline(o,tot);
}
int main(){memset(fi,-1,sizeof(fi));//printf("%d",sizeof(num)/1024/1024);scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<i;j++){int x=a[i]-a[j];if(find(x)){ans++;break;}}for(int j=1;j<=i;j++){int x=a[i]+a[j];if(!find(x)) put(x);}}printf("%d",ans);return 0;
}
/*
3
1 2 3
4 5 6
7 8 9
5 6 7
8 9 1
2 3 4
*/
YBTOJ:求好元素(哈希表)相关推荐
- YBTOJ 特殊数列(哈希表)
文章目录 题目描述 解析 代码 题目描述 解析 应该是哈希表板子题了 选一个1e6左右的质数进行处理即可 其实本质就是链前 没啥特别新鲜的 为什么要写呢? 因为这个东西很早之前看的时候完全没有看懂.. ...
- 网络编程之 哈希表原理讲解 来自老司机的源码
鉴于博主很久没由跟新过数据结构的内容了,所以博主打算给大家讲解一下哈希表的操作 下面的内容来自于一位老司机 martin的源码,博主在这里借用一下,目的是突出哈希表的原理,明天博主就周末了,也能腾出时 ...
- JavaScript 数据结构与算法(二)哈希表
本文参考文献:https://www.cnblogs.com/AhuntSun-blog/p/12636718.html 配套视频教程:https://www.bilibili.com/video/B ...
- 哈希表— —链式实现
哈希表的故事导入 故事情节 为了提高开发团队精神,缓解工作压力,某 IT 公司组织开发团队的 12 位男同事和测试团队 的 12 位女同事开展真人 CS 4vs4 野战联谊!面对性感的女同事,男同事们 ...
- C#中哈希表(HashTable)的用法详解
1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对, ...
- unordered_mapunordered_set的应用以及底层实现(哈希表)
文章目录 1️⃣unordered系列关联容器 unordered_set unordered_map 2️⃣底层结构 哈希概念 哈希冲突 哈希函数 常见的哈希函数 哈希冲突解决 闭散列 线性探测的实 ...
- 一本通提高篇 哈希和哈希表 (二)哈希表
哈希表 哈希表是一种搞笑的数奆结垢.它的优点同字符串哈希一样,查找的算法时间效率几乎就是常数时间,同时也很容易实现,多产生的代价仅仅是消耗内存. 那么什么是哈希表呢 ,我的理解是:按一种分类方式将所有 ...
- 使用哈希函数:H(k)=3k MOD 11,并采用链地址法处理冲突。试对关键字序列(22,41,53,46,30,13,01,67)构造哈希表,求等概率情况下查找成功的查找长度,并设计构造哈希表
使用哈希函数:H(k)=3k MOD 11 ,并采用链地址法处理冲突. 试对关键字序列(22,41,53,46,30,13,01,67)构造哈希表, 求等概率情况下查找成功的查找长度,并设计构造哈希表 ...
- <力扣>-----利用哈希表来判断是否存在重复元素
class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set = new HashSet&l ...
最新文章
- 01爬虫基本原理及Requests库下载
- 华南农业大学c语言期末试题,华南农业大学珠学院C语言期末试卷.doc
- 【大会】AI能解决哪些问题?
- 菜鸟教程 php mysql_PHP MySQL 读取数据 | 菜鸟教程
- 翻译练习:计算机网络
- Pandas 生成随机整数序列
- 虚拟机VM10装Mac OS X 10.9.3
- QTableWidget动态添加QComboBox并获取表格单元的Widget类型
- ado控件 怎么链接mysql_使用ADO或ADO控件访问数据库
- xp此计算机无法连接到,XP系统无法连接到网络怎么办
- 利用matlab来计算双曲函数的值,关于MATLAB第2章数值计算与数据分析的介绍
- Android10power有哪些功能,Android 功耗(10)---电流波形图(power monitor)
- 突然明白了原来我的QQ密保是这样被盗的
- 一个阅读分享的微信小程序(也可用于新闻阅读,新闻分享)(原创)
- 思博伦SpirentTestCenter - RFC2889之MAC地址表容量测试 -双极未来
- 云存储:对象存储管理与安全
- 预测赢家_COVID-19之后的14个技术赢家和输家
- mysql 1524_Debian/Ubuntu遇到MySQL错误ERROR 1524 (HY000):插件未加载的解决
- table表格中行与行间距
- 灾备中经常提到的RTO和RPO是什么意思
热门文章
- 我是怎么进入Oracle这样的大企业的?
- 2017新生儿爆款名字出炉!90后的父母们最受欢迎的居然是.....
- 微型计算机名词术语,微型计算机及接口技名词解释题及解答题.doc
- python达梦数据库_Python 编程可以访问达梦数据吗?
- 防腐投加器需要加盐吗_果干、果脯、蜜钱、水果脆片,哪个有营养?你吃对了吗?...
- php 实现类,php 获取页面中指定内容的实现类
- 评价的等级优良差_满意程度等级划分
- 窗宽窗位改变图像_CT、MRI图像的影像诊断4大原则、5个步骤、3大阅片方法
- mysql sql 检测磁盘_MySQL 数据库磁盘占用情况查询
- html 保存文件指定路径,78.上传文件及在服务器保存文件到任意路径