【东莞中学2013暑假训练题(一)】Window
This commit is contained in:
parent
b4de50b5d1
commit
de87f59713
|
@ -1,3 +1,28 @@
|
||||||
# 标题
|
# 【东莞中学2013暑假训练题(一)】Window
|
||||||
|
|
||||||
* 内容
|
题目描述
|
||||||
|
给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
你的任务是找出窗口在各位置时的max value,min value。
|
||||||
|
输入输出格式
|
||||||
|
输入格式:
|
||||||
|
第1行:n,k。
|
||||||
|
第2行:长度为n的数组。
|
||||||
|
|
||||||
|
输出格式:
|
||||||
|
2行,第1行每个位置的min value,第2行每个位置的max value。
|
||||||
|
|
||||||
|
输入输出样例
|
||||||
|
输入样例#1:
|
||||||
|
8 3
|
||||||
|
1 3 -1 -3 5 3 6 7
|
||||||
|
输出样例#1:
|
||||||
|
-1 -3 -3 -3 3 3
|
||||||
|
3 3 5 5 6 7
|
||||||
|
提示信息
|
||||||
|
数据范围:
|
||||||
|
20%: n<=500;
|
||||||
|
50%: n<=100000;
|
||||||
|
100%: n<=1000000。
|
|
@ -0,0 +1,3 @@
|
||||||
|
# 标题
|
||||||
|
|
||||||
|
* 内容
|
|
@ -0,0 +1,3 @@
|
||||||
|
# 标题
|
||||||
|
|
||||||
|
* 内容
|
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
|
@ -0,0 +1,40 @@
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
int nn, zhe, a[1000001] = { 0 };
|
||||||
|
int tou = 0, wei = 0, f[1000001] = { 0 }, pai[1000001] = { 0 };
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
cin >> nn >> zhe;
|
||||||
|
for (int i = 1; i <= nn; i++) {
|
||||||
|
cin >> a[i];
|
||||||
|
}
|
||||||
|
for (int i = 1; i <= nn; i++) {
|
||||||
|
//cout << f[i - 1] << pai[i - 1] << endl;
|
||||||
|
while (tou < wei && i - pai[tou] >= zhe) {
|
||||||
|
tou++;
|
||||||
|
}
|
||||||
|
while (tou < wei && f[wei-1] > a[i]) {
|
||||||
|
wei--;
|
||||||
|
}
|
||||||
|
f[wei] = a[i];
|
||||||
|
pai[wei++] = i;
|
||||||
|
if (i >= zhe) {
|
||||||
|
cout << f[tou] << " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout<<endl;
|
||||||
|
tou = 0, wei = 0, pai[1] = 0, f[1] = 0;
|
||||||
|
for (int i = 1; i <= nn; i++) {
|
||||||
|
while (tou < wei && i - f[tou] >= zhe) {
|
||||||
|
tou++;
|
||||||
|
}
|
||||||
|
while (tou < wei && f[wei-1] < a[i]) {
|
||||||
|
wei--;
|
||||||
|
}
|
||||||
|
f[wei] = a[i];
|
||||||
|
pai[wei++] = i;
|
||||||
|
if (i >= zhe) {
|
||||||
|
cout << f[tou] << " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,2 @@
|
||||||
|
8 3
|
||||||
|
1 3 -1 -3 5 3 6 7
|
|
@ -0,0 +1,21 @@
|
||||||
|
## z:\Chao\src\gz3628_window\test\in.txt
|
||||||
|
2020/04/24 ÖÜÎå 18:23:35.11
|
||||||
|
-1 -3 -3 -3 3 3
|
||||||
|
3 3 5 5 6 7
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 230 ms with return value 0
|
||||||
|
|
||||||
|
## z:\Chao\src\gz3628_window\test\in2.txt
|
||||||
|
2020/04/24 ÖÜÎå 18:23:35.11
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 90 ms with return value 0
|
||||||
|
|
||||||
|
## z:\Chao\src\gz3628_window\test\in3.txt
|
||||||
|
2020/04/24 ÖÜÎå 18:23:35.11
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 240 ms with return value 0
|
||||||
|
|
Loading…
Reference in New Issue