洛谷 P1886 滑动窗口 /【模板】单调队列
2024-08-29 22:42:02
纯板子题,入队时保证单调性,即单调栈,出队保证题目条件,本题即窗口长度k,在入队出队时都可以维护信息
const int maxm = 1e6+; int buf[maxm], maxq[maxm], minq[maxm], ans1[maxm], ans2[maxm]; int main() {
ios::sync_with_stdio(false), cin.tie();
int n, k, l1 = , r1 = -, l2 = , r2 = -;
cin >> n >> k;
for(int i = ; i < n; ++i)
cin >> buf[i];
for(int i = ; i < n; ++i) {
while(l1 <= r1 && minq[l1] <= i-k) l1++;
while(l2 <= r2 && maxq[l2] <= i-k) l2++;
while(l1 <= r1 && buf[minq[r1]] >= buf[i]) r1--;
minq[++r1] = i;
while(l2 <= r2 && buf[maxq[r2]] <= buf[i]) r2--;
maxq[++r2] = i;
if(i >= k-) ans1[i] = buf[minq[l1]], ans2[i] = buf[maxq[l2]];
}
for(int i = k-; i < n; ++i) {
if(i!=k-) cout << " ";
cout << ans1[i];
}
cout << "\n";
for(int i = k-; i < n; ++i) {
if(i!=k-) cout << " ";
cout << ans2[i];
}
cout << "\n"; return ;
}
最新文章
- jquery实现表格动态添加
- import pysam 出错解决办法
- IntelliJ IDEA Cannot find declaration to go to
- fpmmm(mpm)监控mysql模块安装
- vim环境设置和自动对齐
- 关于数组和List之间相互转换的方法
- underscore demo
- 【剑指offer】员工年龄排序
- B树的查找、插入、删除(附源代码)
- Ubuntu 16.04系统下安装RapidSVN版本控制器及配置diff,editor,merge和exploer工具
- javaWeb中URLEncoder.encode空格问题
- 贪心算法----区间覆盖问题(POJ2376)
- Confluence 6 升级完成后的检查
- Robot Framework - 4 - 创建和扩展测试库的示例
- 利用git 进行多人协作开发
- log4j的一些参数说明
- 有关https有的网站可以访问有的访问不了的问题
- SACD ISO镜像中提取DSDIFF(DFF)、DSF文件
- chattr与lsattr命令
- Spring Boot干货系列:(七)默认日志框架配置