省賽選拔 單調佇列

2021-08-22 17:47:35 字數 2019 閱讀 2140

單調佇列寫法。

py&hyh

想脫單

description

總所周知,,

py和hyh有十分濃烈的脫單意願,但是非常不幸,在乙個風和日麗的下午,他們穿越到乙個沒有妹子的世界,他必須回答乙個問題才能回到本來的世界,這個問題是給出乙個

nm的矩陣,然後有

q次操作,每乙個操作,給出

xi,yi,ti,

表示在ti

時刻摧毀

(xi,yi)

這個格仔,然後他們要求出乙個最早時刻,出現至少乙個

kk的矩陣被毀壞,注意:乙個

kk矩陣被毀壞的意思是某乙個

kk的矩陣中的每乙個格仔都被摧毀過一次或一次以上。聰明的

acmer

能幫他們回答這個問題嗎(如果沒人能

ac這個題,就代表他們兩個沒有脫單的可能了哦)

input

input

:採用多組輸入第一行輸入

n,m,k,q,(1 ≤ n, m ≤ 500, 1 ≤ k ≤ min(n, m), 1 ≤ q ≤ n·m)

分別代表

nm的矩陣,

kk的矩陣,和

q次操作接下來

q行每一行輸入

xi,yi,ti(1 ≤ xi ≤ n, 1 ≤ yi ≤ m, 0 ≤ t ≤ 1e6)

,代表,在

ti這個時刻,xi,

yi這個位置會被摧毀

output

out:輸出一行,代表最早時刻出現至少乙個

k*k的矩陣被毀壞如果永遠不存在這乙個時刻,輸出-1

sample input 1 

2 3 2 5

2 1 8

2 2 8

1 2 1

1 3 4

2 3 2

sample output 1 8

sample input 2 

3 3 2 5

1 2 2

2 2 1

2 3 5

3 2 10

2 1 100

sample output 2 -1

題意:自己看。

解法:標程是二分+二維字首和,我個人覺得雙向佇列寫法更優。

首先每行 記錄  mp[i][ j-k , j ]區間的最大值,再在得到每行每個區間最大值的條件下再次記錄 每列的最大值 mp[i-k,i][j];

這中寫法只要會用雙向佇列來維護單調佇列,就很好些。

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef unsigned long long ull;

typedef pairp;

#define bug printf("*********\n");

#define debug(x) cout<<"["int mp[maxn][maxn];

int mp2[maxn][maxn]; //開個mp2記錄下每行乙個區間的最大值

int main()

for(int i=1; i<=n; i++)

while(dq.size()>0&&dq.front()=mp[i][j])

mp2[i][j]=dq.back();

}dq.clear();

}for(int i=k; i<=m; i++)

while(dq.size()>0&&dq.front()=mp2[j][i])

mp[j][i]=dq.back();

}dq.clear();

}int res=inf;

for(int i=k; i<=n; i++)

}if(res>1e6+1)res=-1;

printf("%d\n",res);

}return 0;

}

2015省賽選拔

arc and point 幾何弱成狗 block toy 3維版本的鋪磚,狀態壓縮dp。four coloring of a map giving directions to the tree just another pachinko like machine biggest number 搜尋...

NYNU 省賽選拔題 8

一天萌萌噠孟孟學長去博物館參觀,他想看到更多的東西。博物館可以表示為n m細胞的乙個矩形區域。表示為路,表示為牆壁,每個牆壁上面都掛有美麗的畫卷。孟孟學長可以看到與他所在位置相鄰的牆壁上面的畫卷。他有很多時間,所以他會沿著路走,只要路是通的每一張都可以看到。第一行輸入3個數n m k 3 n,m 1...

NYNU 省賽選拔題 3

二叉樹,若其與自己的映象完全相同,就稱其為映象樹。是一棵映象樹 而不是映象樹。現給你一棵二叉樹,請你判斷其是不是映象樹。第一行是乙個整數數t,表示測試資料有多少組 每組資料第一行是乙個正整數n 1 n 100 表示二叉樹中節點的數量 下面n行,每行有三個正整數a b c 1 a 100,0 b,c ...