Hdu 5806 NanoApe Loves Sequence Ⅱ(双指针)

Hdu 5806

题意:给出一个数组,求区间第k大的数大于等于m的区间个数

#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
const int N=2e5+10;
int a[N];
int main()
{int T=read();while(T--){int n=read(),m=read(),k=read();for(int i=0;i<n;i++) a[i]=read();int l=0,r=0,cnt=0;ll ans=0;while(l<=r&&r<n){while(r<n&&cnt<k){if(a[r++]>=m) cnt++;}if(r>n||cnt<k) break;if(cnt==k) ans+=n-r+1;while(cnt==k){if(a[l++]>=m) cnt--;if(cnt==k) ans+=n-r+1;}}printf("%lld\n",ans);}return 0;
}

Java版本实现,输入可能会导致超时,需要使用BufferedInputStream加速

import java.io.*;
import java.util.*;
class MyInputStream extends InputStream {  public BufferedInputStream bis = new BufferedInputStream(System.in);  public int read() throws IOException {  int i;  while ((i = bis.read()) < 48)  if (i == -1)  return -1;  int temp = 0;  while (i > 47) {  temp = temp * 10 + i - 48;  i = bis.read();  }  return temp;  }
}
public class Main
{static final int N=200005;static int a[]=new int[N];public static void main(String[] args) throws IOException{MyInputStream sc=new MyInputStream();int T=sc.read();Integer zero=new Integer("0");while(!zero.equals(T--)){int n=sc.read(),m=sc.read(),k=sc.read();for(int i=0;i<n;i++) a[i]=sc.read();int l=0,r=0,cnt=0;long ans=0;while(l<=r&&r<n){while(r<n&&cnt<k){if(a[r++]>=m) cnt++;}if(r>n||cnt<k) break;if(cnt==k) ans+=n-r+1;while(cnt==k){if(a[l++]>=m) cnt--;if(cnt==k) ans+=n-r+1;}}System.out.println(ans);}sc.close();}
}

转载于:https://www.cnblogs.com/zsyacm666666/p/6703155.html

Hdu 5806 NanoApe Loves Sequence Ⅱ(双指针) (C++,Java)相关推荐

  1. BestCoder Round #86 1003 HDU 5806——NanoApe Loves Sequence Ⅱ

    题意: 给定一个序列,问在这个序列里有多少区间第k的的数>=m 思路: 在比赛的时候是多想了,开始像区间第k大的问题,赛后想想实在是偏了. 正确的解法是枚举起点然后用尺取法维护一段区间,直到找到 ...

  2. BestCoder Round #86 1002 HDU 5805 ——NanoApe Loves Sequence

    题意 给定一个数列,随机从该数列里删除一个数,求该数列的的相邻之间的绝对值的最大值的和. 思路 两个数列来分别维护i位前面的相邻的绝对值的最大以及i后面的最大,枚举每一个可能删除的数,然后分别从左右和 ...

  3. hdu 5273 Dylans loves sequence 逆序数简单递推

    Dylans loves sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...

  4. hdu 5273 Dylans loves sequence 逆序数 区间dp

    点击打开链接 题意:给n个数,q次询问,(L,R)区间内的逆序数. 思路: 区间dp 代码一: 1 #include <bits/stdc++.h> 2 using namespace s ...

  5. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  6. 2021牛客暑期多校训练营7 K-xay loves sequence(主席树+二分)

    K-xay loves sequence 首先不考虑模kkk的限制,容易想到对原数组做一个差分得到di=ai−ai−1d_i=a_i-a_{i-1}di​=ai​−ai−1​,显然对于∀1≤i≤nai ...

  7. HDU 4873 ZCC Loves Intersection(可能性)

    HDU 4873 ZCC Loves Intersection 题目链接 题意:d维的.长度为n的块中,每次选d条平行于各条轴的线段,假设有两两相交则点数加1,问每次得到点数的期望是多少 思路:自己推 ...

  8. BestCoder Round #86 HDU 5804,HDU 5805,HDU 5806,HDU 5807

    第一题: HDU 5804 链接 0 - 商品总和之间的任意价格都可以取到 每次判断记录是否大于总和即可 代码: #include <cstdio> #include <iostre ...

  9. HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)

    在一个D维空间,只有整点,点的每个维度的值是0~n-1 .现每秒生成D条线段,第i条线段与第i维度的轴平行.问D条线段的相交期望. 生成线段[a1,a2]的方法(假设该线段为第i条,即与第i维度的轴平 ...

  10. HDU 5646 DZY Loves Partition

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5646 bc:http://bestcoder.hdu.edu.cn/contests/con ...

最新文章

  1. 手写一个简单的HashMap,搞定挑剔面试官
  2. 用C++对C++语法格式进行分析
  3. 画师id_100位插画师是怎么过日子的?
  4. MyBatis使用心得(一)--- 简单介绍
  5. SQL Server修改标识列方法 如自增列的批量化修改
  6. 若依集成ueditor富文本编辑器
  7. 微信语音怎么转发给别人_微信怎么把语音转发给别人?看看网友怎么说?原来方法这么简单...
  8. jdbc——mysql学习
  9. [开箱即用]一个用PHP实现的文字翻译,支持谷歌、百度、小牛翻译sdk(工厂抽象模式)
  10. 经济学积累(二)一些经济学词汇及概念
  11. ps如何把自己的图与样机结合_如何用PS制作样机,并且看起来毫无痕迹
  12. 2022年制冷与空调设备运行操作考试题库模拟考试平台操作
  13. SQLMAP插件tamper模块介绍
  14. 让微信 8.0 「裂开」「炸弹」的特效代码来了
  15. Java减肥计划(使用if结构)
  16. Visual C++中error spawning cl.exe错误的两种解决方法
  17. ros2_control官方文档
  18. 数字电路----加法器的实现
  19. 网上虚拟展厅制作方案及流程
  20. 搜索引擎收录入口 大全

热门文章

  1. 473.火柴拼正方形
  2. mysql与oracle存储过程_5分钟学会oracle与mysql存储过程insertinto
  3. lm80认证_LM-80认证知多少?
  4. linux嵌入式6818,嵌入式ARM实验箱(FS_6818M4)_华清远见研发中心
  5. 深度学习框架PyTorch:入门与实践 学习(三)
  6. linux全局查找-find,locate,whereis,which,type区别
  7. android studio | openGL es 3.0增强现实(AR)开发 (2) .so文件的应用和理解
  8. 使用Uchihash处理恶意软件中的嵌入式哈希
  9. Oracle停止数据泵,如何停止重启数据泵任务
  10. C++11模板友元语法