设为首页 加入收藏

TOP

BZOJ 1342 Baltic2007 Sound静音问题 单调队列
2015-07-20 17:24:30 来源: 作者: 【 】 浏览:2
Tags:BZOJ 1342 Baltic2007 Sound 静音 问题 单调 队列

题目大意:给定一个长度为n的序列,求哪些长度为m的区间满足区间内最大值与最小值之差小于等于c

利用单调队列维护区间内的最大值和最小值- - 硬搞就可以了- -

刷刷水题真爽- -

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #define M 1001001 using namespace std; int n,m,c,a[M]; int q_max[M],r_max,h_max; int q_min[M],r_min,h_min; bool flag; int main() { int i; cin>>n>>m>>c; for(i=1;i<=n;i++) { scanf("%d",&a[i]); { int &r=r_max,&h=h_max,*q=q_max; while( r-h>=1 && a[q[r]]
      
       =m) q[++h]=0; } { int &r=r_min,&h=h_min,*q=q_min; while( r-h>=1 && a[q[r]]>a[i] ) q[r--]=0; q[++r]=i; while(i-q[h+1]>=m) q[++h]=0; } if( i>=m && a[q_max[h_max+1]]-a[q_min[h_min+1]]<=c ) printf("%d\n",i-m+1),flag=1; } if(!flag) puts("NONE"); return 0; } 
      
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇bzoj1026--SCOL2009--windy数(数.. 下一篇[LeetCode]179.Largest Number

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)
·国际音标 [ç] (2025-12-26 20:20:31)
·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)