[CCPC2019 哈尔滨] L. LRU Algorithm

Description

对一个序列执行 LRU 算法。每次询问给定一个窗口,问它是否出现过。

Solution

很显然我们可以先假设窗口长度无限,匹配时候只匹配前缀就可以了。

然后我准备用普通 HASH 莽过去,发现凉了。

首先可以不使用 HASH 表,而对每个长度存下它的所有 HASH 值,然后暴力枚举看是否相等。

这样的好处就是相等以后可以找到原序列然后确定一下是否真的相等,简称二次判断。

虽然复杂度玄学,但还是 \(982ms\) 卡过去了。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int M = 5003, MOD = 1000000007;
int t[M],q[M][M],T,n,p,m;
ll h[M][M],val;
int main() {
scanf("%d",&T);
while(T--) {
scanf("%d%d",&n,&p);
for(int i=0;i<=n;i++) {
for(int j=0;j<=n;j++) {
q[i][j]=h[i][j]=0;
}
}
int top=0;
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) q[i][j]=q[i-1][j];
int tmp,pos=0;
scanf("%d",&tmp);
for(int j=1;j<=top;j++) {
if(tmp==q[i][j]) {
pos=j;
break;
}
}
if(pos) {
for(int j=pos;j;j--) q[i][j]=q[i][j-1];
}
else {
for(int j=++top;j;j--) q[i][j]=q[i][j-1];
}
q[i][1]=tmp;
for(int j=1;j<=n;j++) h[i][j]=(h[i][j-1]*(n+1)+q[i][j])%MOD;
}
while(p--) {
scanf("%d",&m);
val=0;
for(int i=1;i<=m;i++) {
scanf("%d",&t[i]);
val=(val*(n+1)+t[i])%MOD;
}
int flag=0;
for(int i=0;i<=n;i++) {
if(h[i][m]==val) {
int fg=1;
for(int j=1;j<=m;j++) {
if(q[i][j]!=t[j]) {
fg=0;
break;
}
}
if(fg) {
flag=1;
break;
}
}
}
puts(flag?"Yes":"No");
}
}
} /*
1
7 5
4 3 4 2 3 1 4
1 4
2 2 3
3 3 2 1
4 4 1 3 2
4 3 4 0 0
*/

[CCPC2019 哈尔滨] L. LRU Algorithm - 哈希的更多相关文章

  1. BZOJ_1212_[HNOI2004]L语言_哈希

    BZOJ_1212_[HNOI2004]L语言_哈希 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写 ...

  2. LRU Algorithm Gym - 102394L (HASH)

    LRU Algorithm \[ Time Limit: 1000 ms\quad Memory Limit: 524288 kB \] 题意 给出 \(n\) 个数字和 \(m\) 次查询. 每次询 ...

  3. 【gym102394L】LRU Algorithm(自然溢出哈希)

    题意:给定一个n个数的数字序列,第i个数为a[i],每次操作会将a[i]插入或移到最前端: 1.若a[i]已经在序列中出现过,则将其移到最前端,并删除原出现位置 2.若a[i]未出现过,则直接将其插入 ...

  4. Operating System Memory Management、Page Fault Exception、Cache Replacement Strategy Learning、LRU Algorithm

    目录 . 引言 . 页表 . 结构化内存管理 . 物理内存的管理 . SLAB分配器 . 处理器高速缓存和TLB控制 . 内存管理的概念 . 内存覆盖与内存交换 . 内存连续分配管理方式 . 内存非连 ...

  5. CCPC 2017 哈尔滨 L. Color a Tree && HDU 6241(二分+树形DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6241 题意:给你一棵有 n 个结点的树,每个结点初始颜色都为白色,有 A 个条件:结点 x_i 的黑色 ...

  6. [CCPC2019 哈尔滨] A. Artful Paintings - 差分约束,最短路

    Description 给 \(N\) 个格子区间涂色,有两类限制条件 区间 \([L,R]\) 内至少 \(K\) 个 区间 \([L,R]\) 外至少 \(K\) 个 求最少要涂多少个格子 Sol ...

  7. The 2019 China Collegiate Programming Contest Harbin Site

    题解: https://files.cnblogs.com/files/clrs97/HarbinEditorialV2.zip Code: A. Artful Paintings /* let x= ...

  8. 缓存算法(FIFO 、LRU、LFU三种算法的区别)

    FIFO算法 FIFO 算法是一种比较容易实现的算法.它的思想是先进先出(FIFO,队列),这是最简单.最公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小.空间满的时 ...

  9. Redis中的LRU淘汰策略分析

    Redis作为缓存使用时,一些场景下要考虑内存的空间消耗问题.Redis会删除过期键以释放空间,过期键的删除策略有两种: 惰性删除:每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除 ...

随机推荐

  1. 【MVC】Scripts.Render的用法

    一.配置BundleConfig.cs文件 1.首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件2.BundleConfig就是一个微软新加的 一个打包 ...

  2. 【剑指Offer】59:对称的二叉树

    题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 题解:递归 public static boolean isSymmetric ...

  3. 无人机通信协议MAVLink简介

    MAVLink MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)之间通讯,以及无 ...

  4. Wannafly Winter Camp 2020 Day 6A Convolution - NTT

    求 \(\sum_{i=1}^n \sum_{j=1}^n 2^{a_ia_j}\) Solution 化简一下 \[ 2^{a_ia_j} = p^{(a_i+a_j)^2-a_i^2-a_j^2} ...

  5. Docker 下部署hadoop集群

    一.主机规划 3台主机:1个master.2个slaver/worker ip地址使用docker默认的分配地址: master: 主机名: hadoop2.ip地址: 172.17.0.2 slav ...

  6. CSRF 攻击的应对之道 转载

    CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...

  7. Winpcap学习笔记

    ————————————————版权声明:本文为CSDN博主「Ezioooooo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blo ...

  8. 敌兵布阵 HDU - 1166 板子题

    #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...

  9. 真·从零开始的Ubuntu+Apache+MySQL+PHP+phpstorm+xdebug下的debug环境搭建(纯小白向)

    费了好几天劲,终于把Linux下的开发环境如何设置搞的有点明白了,在此写篇博客庆祝一下,让大家以后少踩坑(缓慢更新中) 关键词 win10双系统装Ubuntu 下载U盘烧录工具 下载UbuntuLTS ...

  10. redis 安装 集群 主从 哨兵 docker

    安装redis 官方文档 docker run -d --net host -v /opt/myconfig/redis/redis.conf:/usr/local/etc/redis/redis.c ...