zoukankan      html  css  js  c++  java
  • P1440 求m区间内的最小值

    小可爱的题面

    这题跟那个滑动窗口很像啊,就是滑动窗口是只有多于m个数字才会输出,而该题则是不足m个数就直接从1开始比对(本来还以为是个环。。),那么这题还有要注意的一点就是这题的m个数字不包含自身,故最后一个数据其实是没用的,那么就可以在最开始输出个0,之后当成包含自身的情况,最后少处理一个数,代码如下

    int n,m,top,down=1;//头文件啥的自己加了啊。。太长了。。浪费格子。。
    int a[N],q[N];
    
    int get(){//快读
    	int z=1,y=0;
    	char zy=getchar();
    	while(zy>'9'||zy<'0'){
    		if(zy=='-')z=-1;
    		zy=getchar();
    	}
    	while(zy>='0'&&zy<='9'){
    		y=y*10+zy-'0';
    		zy=getchar();
    	}
    	return z*y;
    }
    
    int main(){
    	scanf("%d%d",&n,&m);
    	printf("0
    ");//首先输出0
    	for(int i=1;i<n;i++){
    		scanf("%d",a+i);
    		while(top>=down&&a[q[top]]>=a[i])top--;//维护单调性
    		q[++top]=i;
    		while(q[down]<=i-m)down++;//m个数
    		printf("%d
    ",a[q[down]]);//也可以不输出0,将这句话调至while循环第一句,执行n次,效果相同
    	}
    	return 0;
    }
    

      嗯

  • 相关阅读:
    wenbao与powershell
    wenbao与windows
    wenbao与msf
    CCF201612-Python题解
    语不惊人死不休
    为人性僻耽佳句(一)
    Pytorch出现 raise NotImplementedError
    CNN卷积
    python字符串切片
    python----numpy(持续更新)
  • 原文地址:https://www.cnblogs.com/hahaha2124652975/p/11191398.html
Copyright © 2011-2022 走看看