牛客练习赛3 E - 绝对半径2051
链接:https://www.nowcoder.net/acm/contest/13/E
来源:牛客网
题目描述
作为一名优秀的狙击手,????不仅经常保养枪支,也经常保养弹药。
????有?枚子弹,第?枚的型号为??,????打算扔掉其中最多?枚。
大多数优秀的狙击手都有艺术癖好,????希望扔掉一部分子弹后,最
长的连续相同子弹序列的长度尽量长。
输入描述:
第一行,两个整数?,?。第二行,?个正整数?
?
。
输出描述:
一行,一个整数,最长的连续相同子弹序列的长度。
输入
8 1 1 1 1 2 2 3 2 2
输出
4
备注
对于10%的数据,? ≤ 10。
对于30%的数据,? ≤ 1000。
对于60%的数据,?? ≤ 30。
对于100%的数据,0 ≤ ? ≤ ? ≤ 10^5,1 ≤ ?? ≤ 10^9。
题解
每一种数字分开考虑,每个枚举答案以哪个位置为结尾,二分一下起点就可以了。
#include<bits/stdc++.h>
using namespace std;const int maxn = 1e5 + 10;
int a[maxn], b[maxn];
int n, k;
vector<int> g[maxn];int lsh(int x) {int L = 1, R = n;while(L <= R) {int mid = (L + R) / 2;if(b[mid] > x) R = mid - 1;else if(b[mid] < x) L = mid + 1;else return mid;}return 0;
}int main() {scanf("%d%d", &n, &k);for(int i = 1; i <= n; i ++) {scanf("%d", &a[i]);b[i] = a[i];}sort(b + 1, b + 1 + n);for(int i = 1; i <= n; i ++) {a[i] = lsh(a[i]);}for(int i = 1; i <= n; i ++) {g[a[i]].push_back(i);}int ans = 1;for(int i = 1; i <= n; i ++) {if(g[i].size() <= 1) continue;for(int j = 1; j < g[i].size(); j ++) {int L = 0, R = j, p = j;while(L <= R) {int mid = (L + R) / 2;if((g[i][j] - g[i][mid] + 1) - (j - mid + 1) <= k) {p = mid;R = mid - 1;} else {L = mid + 1;}}ans = max(ans, j - p + 1);}}printf("%d\n", ans);return 0;
}
转载于:https://www.cnblogs.com/zufezzt/p/8412905.html
牛客练习赛3 E - 绝对半径2051相关推荐
- 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 牛客练习赛34 E little w and Digital Root(数位dp)
title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...
- 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)
title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...
- 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)
牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- 牛客练习赛73 D 离别(线段树+右端点排序离线查询)
牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k. 这个可以用队列或者vector来维护. 然后我们对于q个查询, ...
- 牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)
牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作,最后得到的答案会是最大的,那我们可以将它放进一个最小堆中来维护,但是里面的数是需要取模的,当它取模的时候,将会变小.那 ...
- 妄想集合(牛客练习赛90)
妄想集合(牛客练习赛90) 题意: 开始有 n 个可重集合,开始时每一个集合中都有一个数,有 m 个操作. Quant l r x\text{Quant l r x}Quant l r x:往编号在 ...
- 踩不出足迹(牛客练习赛88 )
踩不出足迹(牛客练习赛88 ) 题意: 长度为n的数组a,每个数是一个k位二进制 定义一下操作: 令第一次得到的结果为 a1a_1a1.你需要从第二个数开始,每次可以选择与上一次得到的结果异或或者同 ...
最新文章
- Juniper SRX IPsec *** base route CLI
- 闯荡北京卖枣的临县人:同有一个“红枣美梦”(2张)
- lower_bound和upper_bound算法
- 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态
- windows副本不是正版怎么办_盗版系统总是崩溃?别着急,让我来告诉你正版系统怎么下载...
- 不恢复余数除法原理_《有余数的除法》教案
- Runtime.getRuntime().exec()----记录日志案例
- linux fuse文件系统在 android fuse sdcard的 运用
- 说说低功耗的那些事儿
- p12文件和mobileprovision文件导入到xcode如何使用
- linux 下载hbase源码,linux上安装hbase(示例代码)
- CentOS虚拟机根分区磁盘扩容操作
- 玩转Linux的下Ip计算器(图文)
- 程序员因工资低拒绝offer,HR:估计你一辈子就是个程序员
- css设置overflow:hiden行内元素会发生偏移的现象
- PaddleX---Mask RCNN实例分割
- 辽宁省冰雪旅游发展现状及开发策略分析
- 米家APP又崩了,智能家居还可靠吗?
- javascript的ES6笔记整理
- vue集成echarts 绘制中国地图