计蒜客2017 第五场 UCloud 的安全秘钥(中等) 尺取法
来源:互联网 发布:人工智能的利弊辩论 编辑:程序博客网 时间:2024/06/06 00:47
题目链接:https://nanti.jisuanke.com/t/15768
解析:一直尺取,记录相同的个数,复杂度O(n)
代码:
#include<bits/stdc++.h>#define N 50009using namespace std;const int INF = 0x3f3f3f3f;int a[N], b[N], c[N];int judge(int n, int nn, int mx){ int ans = 0, x = 0; memset(c, 0, sizeof(c)); for(int i = 1; i <= nn; i++) { c[a[i]]++; if(c[a[i]] == b[a[i]]) x++; if(c[a[i]] - 1 == b[a[i]] && b[a[i]]) x--; } if(x == mx) ans++; for(int i = nn + 1; i <= n; i++) { c[a[i]]++; if(c[a[i]] == b[a[i]]) x++; if(c[a[i]] - 1 == b[a[i]] && b[a[i]]) x--; c[a[i-nn]]--; if(c[a[i-nn]] == b[a[i-nn]] && b[a[i-nn]]) x++; if(c[a[i-nn]] + 1 == b[a[i-nn]]) x--; if(x == mx) ans++; } return ans;}int main(){ int n, m; scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); scanf("%d", &m); while(m--) { int num, nn, mx = 0; memset(b, 0, sizeof(b)); scanf("%d", &nn); for(int i = 1; i <= nn; i++) { scanf("%d", &num); if(!b[num]) mx++; b[num]++; } printf("%d\n", judge(n, nn, mx)); } return 0;}
阅读全文
0 0
- 计蒜客2017 第五场 UCloud 的安全秘钥(中等) 尺取法
- 2017计蒜客第五场比赛 UCloud 的安全秘钥(中等和困难) 双指针和随机哈希
- 2017计蒜客第五场初赛 UCloud 的安全秘钥(困难)(哈希算法)
- 计蒜客 UCloud 的安全秘钥(中等) 构造hash
- 2017 计蒜之道初赛第5场 UCloud 的安全秘钥(中等)【思维】
- [Hash] 2017 计蒜之道 初赛 第五场 UCloud 的安全秘钥
- [hash+随机] 2017 计蒜之道初赛第五场UCloud 的安全秘钥
- UCloud 的安全秘钥(哈希表 计蒜之道第五场)
- 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)(暴力)
- 2017 计蒜之道 初赛 第五场 D UCloud 的安全秘钥(困难)[Hash]
- 计蒜之道 2017 初赛 UCloud 的安全秘钥(中等)
- UCloud 的安全秘钥(简单)解题报告
- B. UCloud 的安全秘钥(简单)
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建(贪心)
- 2017 计蒜之道 初赛 第五场——A. UCloud 机房的网络搭建
- 2017计蒜之道初赛第五场-UCloud 机房的网络搭建
- UCloud 机房的网络搭建(找规律 计蒜之道第五场)
- JVM运行内存模型
- java 算法基础~快速排序算法
- springmvc ajax
- 4. Android
- 扬帆起航
- 计蒜客2017 第五场 UCloud 的安全秘钥(中等) 尺取法
- Android插件实例——360 DroidPlugin详解
- Redis入门学习 (二)
- iOS开发工具Xcode安装与使用
- 图文详解!嵌入式Linux内核启动主要分为这三个阶段
- Bootstrap踩坑经历
- C#3.0新特性
- springBoot+mybatis多数据源的配置
- Nearest Common Ancestors POJ