POJ 2823 Sliding Window
来源:互联网 发布:三菱plc脉冲输出编程 编辑:程序博客网 时间:2024/05/21 06:46
题目大意:第一行是n,k,第二行给你n个数字 让你求从i=0开始到i+k这个区间最大值 最小值 之后循环到i+k>n时结束 输出结果第一行是最小值 第二行是最大值
解题思路:此题是一道简单的连更新都没有的线段树,套用线段树模板即可A掉。当然此题也可以用单调队列来做。大家可以去试下,当然线段树的代码最好提交为C++,G++会超时的。
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <map>#include <cmath>#include <queue>#include <string>#include <vector>#include <set>#define ll long long#define N 1000005 <<2#define sc(x) scanf("%d",&x)#define dsc(x,y) scanf("%d%d",&x,&y)#define pr(x) printf("%d\n",x)#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;int sto[N];int sti[N];void PushUp(int rt){ sto[rt]=max(sto[rt<<1],sto[rt<<1|1]);//更新最大值 sti[rt]=min(sti[rt<<1],sti[rt<<1|1]);//更新最小值}void BuildTree(int l,int r,int rt){ if(l==r) { sc(sto[rt]); sti[rt]=sto[rt]; return; } int mid=(l+r)>>1; BuildTree(lson); BuildTree(rson); PushUp(rt);}int querymin(int L,int R,int l,int r,int rt)//查询最小值{ if(L<=l&&r<=R) return sti[rt]; int mid=(l+r)>>1; int res=1<<25;//取极大值 if(L<=mid) res=min(res,querymin(L,R,lson)); if(mid<R) res=min(res,querymin(L,R,rson)); return res;}int querymax(int L,int R,int l,int r,int rt)//查询最大值{ if(L<=l&&r<=R) return sto[rt]; int mid=(l+r)>>1; int res=-(1<<25);//取极小值 if(L<=mid) res=max(res,querymax(L,R,lson)); if(mid<R) res=max(res,querymax(L,R,rson)); return res;}int main(){ int n,k; while(~dsc(n,k)) { BuildTree(1,n,1); for(int i=0;i+k<=n;i++) { printf("%d%c",querymin(i+1,i+k,1,n,1),i+k==n?'\n':' ');//最小值 } for(int i=0;i+k<=n;i++) { printf("%d%c",querymax(i+1,i+k,1,n,1),i+k==n?'\n':' ');//最大值 } } return 0;}
END!!!!!!!!!!!!!!!!!!!!
2 0
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- poj 2823 Sliding Window
- POJ 2823 Sliding Window
- POJ-2823-Sliding Window
- POJ 2823 Sliding Window
- POJ 2823 Sliding Window
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- POJ 2823(Sliding Window)
- POJ-2823-Sliding Window
- poj 2823 Sliding Window
- POJ 2823 Sliding Window
- POJ 2823 Sliding Window
- Sliding Window poj 2823
- POJ 2823 Sliding Window
- poj 2823 Sliding Window
- POJ 2823 Sliding Window
- 事件分发与拦截
- xampp中Apache启动时443端口被占用
- 猎豹"快切App"中用到的Android开发技巧探索
- 小李飞刀系列之Oracle EBS期间平均成本(PAC)--生产成本计算(三)资源成本计算
- 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输入到一个磁盘文件“test”中保存。输入的字符串以”!”结束。
- POJ 2823 Sliding Window
- 有哪些一般人不知道的数据获取方式
- 错误记录四
- 4.1K近邻--python机器学习
- 明明的随机数
- spring事务配置之关键
- This app has been built with an incorrect configuration. Please configure your build for VectorDrawa
- GitHub 优秀的 Android 开源项目
- 深度解析 机器人自主移动的秘密