计蒜之道 2017 初赛 UCloud 的安全秘钥(中等)
来源:互联网 发布:淘宝举报假冒商品 编辑:程序博客网 时间:2024/05/21 10:58
每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作。作为一家安全可信的云计算平台,
秘钥的安全性至关重要。因此,UCloud 每年会对用户的秘钥进行安全性评估,具体的评估方法如下:
首先,定义两个由数字序列组成的秘钥 a 和 b 近似匹配(≈) 的关系。a 和 b 近似匹配当且仅当同时满足以下两个条件:
- ∣a∣=∣b∣,即 a 串和 b 串长度相等。
- 对于每种数字 c,c 在 a 中出现的次数等于 c 在 b 中出现的次数。
此时,我们就称 a 和 b 近似匹配,即 a≈b。例如,(1,3,1,1,2)≈(2,1,3,1,1)。
UCloud 每年会收集若干不安全秘钥,这些秘钥组成了不安全秘钥集合 T。对于一个秘钥 s 和集合 T 中的秘钥 t来说,
它们的相似值定义为:s 的所有连续子串中与 t 近似匹配的个数。相似值越高,说明秘钥 s 越不安全。
对于不安全秘钥集合 T 中的每个秘钥 t,你需要输出它和秘钥 s 的相似值,用来对用户秘钥的安全性进行分析。
输入格式
第一行包含一个正整数 n,表示 s 串的长度。
第二行包含 n 个正整数 s1,s2,...,sn(1≤si≤n),表示 s 串。
接下来一行包含一个正整数 m,表示询问的个数。
接下来 m 个部分:
每个部分第一行包含一个正整数 k(1≤k≤n),表示每个 t 串的长度。
每个部分第二行包含 k 个正整数 t1,t2,...,tk(1≤ti≤n),表示 T 中的一个串 t。
输入数据保证 T 中所有串长度之和不超过 200000。
对于简单版本:1≤n,m≤100;
对于中等版本:1≤n≤50000,1≤m≤500;
对于困难版本:1≤n≤50000,1≤m≤100000。
输出格式
输出 m 行,每行一个整数,即与 T 中每个串 t 近似匹配的 s 的子串数量。
样例解释
对于第一个询问,(3,2,1,3)≈(2,3,1,3),(3,2,1,3)≈(3,1,3,2);
对于第二个询问,(1,3)≈(3,1),(1,3)≈(1,3);
对于第三个询问,(3,2)≈(2,3),(3,2)≈(3,2)。
样例输入
52 3 1 3 2343 2 1 321 323 2
样例输出
#include<cstdio>#include<cstring>#include<algorithm>#define random(x) (rand()%x)using namespace std;typedef long long ll;const ll inf=1e18;const int maxn=50005;ll s[maxn],t[maxn];ll has[maxn];ll pre[maxn]={0};int main(){ int n,m,nn; for(int i=1;i<=maxn;i++) has[i]=random(inf);// for(int i=1;i<5;i++)// printf("%d ",has[i]); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lld",&s[i]); pre[i]=pre[i-1]+has[s[i]]; } scanf("%d",&m); while(m--) { ll sum=0; int ans=0; scanf("%d",&nn); for(int i=1;i<=nn;i++) { scanf("%lld",&t[i]); sum+=has[t[i]]; } for(int i=nn;i<=n;i++) { if(pre[i]-pre[i-nn]==sum) ans++; } printf("%d\n",ans); } return 0;}
- 计蒜之道 2017 初赛 UCloud 的安全秘钥(中等)
- 2017 计蒜之道初赛第5场 UCloud 的安全秘钥(中等)【思维】
- [Hash] 2017 计蒜之道 初赛 第五场 UCloud 的安全秘钥
- [hash+随机] 2017 计蒜之道初赛第五场UCloud 的安全秘钥
- 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)(暴力)
- 2017 计蒜之道 初赛 第五场 D UCloud 的安全秘钥(困难)[Hash]
- UCloud 的安全秘钥(哈希表 计蒜之道第五场)
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建(贪心)
- 2017 计蒜之道 初赛 第五场——A. UCloud 机房的网络搭建
- 2017计蒜之道初赛第五场-UCloud 机房的网络搭建
- 计蒜客 UCloud 的安全秘钥(中等) 构造hash
- 计蒜客2017 第五场 UCloud 的安全秘钥(中等) 尺取法
- 2016 计蒜之道 初赛 第一场 青云的机房组网方案(中等)
- 2016 计蒜之道 初赛 第三场 百度帐号的选取方案(中等) KMP
- 2017 计蒜之道 初赛 第六场 微软大楼设计方案(中等)【思维+RMQ】
- 2017 计蒜之道 初赛 第六场 微软大楼设计方案(中等)
- 计蒜客-2017 计蒜之道 初赛 第六场-C-微软大楼设计方案(中等)
- spring 注解学习
- JVM(1):Java 类的加载机制
- 通过继承TagSupport编写标签的方法
- 仿IOS风格的搜索框
- HA集群(nginx )
- 计蒜之道 2017 初赛 UCloud 的安全秘钥(中等)
- (Django)对object.all()等大量数据的QuerySet限制内存使用
- 【SVN】消除文件夹与服务器的关联
- spring 注解的学习
- 在win7下安装Ubuntu系统启动驱动
- Android调节屏幕亮度实现代码
- FTP 协议那些事
- 463. Island Perimeter
- USACO-Section 1.4 Mother Milk[模拟][搜索]