題目鏈結
時間限制: 1 s
空間限制: 256000 kb
題目等級 : ** gold
題解題目描述 description
給你乙個長度為n的陣列,乙個長為k的滑動的窗體從最左移至最右端,你只能見到視窗的k個數,每次窗體向右移動一位,如下表:
window positionmin value
max value
[ 1 3 -1 ] -3 5 3 6 7 -13
1 [ 3 -1 -3 ] 5 3 6 7 -33
1 3 [ -1 -3 5 ] 3 6 7 -35
1 3 -1 [ -3 5 3 ] 6 7 -35
1 3 -1 -3 [ 5 3 6 ] 736
1 3 -1 -3 5 [ 3 6 7 ]37
你的任務是找出視窗在各位置時的max value, min value.
輸入描述 input description
第1行n,k,第2行為長度為n的陣列
輸出描述 output description
2行第1行每個位置的min value
第2行每個位置的max value
樣例輸入 sample input
8 31 3 -1 -3 5 3 6 7
樣例輸出 sample output
-1 -3 -3 -3 3 3
3 3 5 5 6 7
資料範圍及提示 data size & hint
資料範圍:20%: n<=500; 50%: n<=100000;100%: n<=1000000;
解題思路:
利用單調佇列來維護區間的最小值和最大值,q1維護的是最小值的單調佇列,q2維護的是最大值的單調佇列,這裡需要先讓k個元素先進佇列,然後輸出n-k個最小值與最大值。
**:
#includeusing namespace std;
int a[1000005],q1[1000005],q2[1000005],min[1000005],max[1000005];
int main()
for(int i=k+1;i<=n;i++)
min[n1++]=a[q1[head1]];
max[n2++]=a[q2[head2]];
printf("%d",min[0]);
for(int i=1;iprintf("\n");
printf("%d",max[0]);
for(int i=1;iprintf("\n");
return 0;
}
vim 單視窗 多視窗
可以在乙個視窗裡多次開啟同乙個檔案,也可以在乙個視窗裡開啟不同檔案。功能鍵描述 r filename 在游標後顯示filename檔案內容 n編輯下乙個檔案 n編輯上乙個檔案 files 列出目前vim開啟的所有檔案 w filename 另存為功能鍵 描述 sp filename 開啟乙個新視窗。...
關於單視窗登入
今天在公司發現了一種實現單視窗的解決方案,在些將它寫出來.以備以後使用.這裡說的單視窗,我不知道算不算是一種單點登入.也不想去深究,反正我又不是搞理論的,能用,切能用對就ok.管浪多也沒用.是不.呵呵 實現原理很簡單,只是想到的人不多吧.在說之前,先說說要用到那些東西 1.標識物件,這是必須的,要不...
WPF 單例視窗
首先在主窗體中將選單關聯的窗體例項化。第二步 將每個選單對應窗體的closing事件重寫。之所以要重寫closing事件,是因為在選單對應的視窗關閉之後,再次開啟就會報錯 第三步 在主窗體中選單事件裡面進行判斷處理 示例 public partial class main window 事件呼叫 p...