Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 221 - F. store

Problem Statistics

Solved Member: 2  Submission: 15  User Tried: 3

Statement:

在一張很大的地圖上有 n*m 個十字路口,這些路口剛好排成了 n 列 m 行,我們用 (x,y) 來表示第 x 列第 y 行的十字路口。翰翰想要稱霸這張地圖,他想在每個路口設立自己的店家。首先,他有一家位於 (x0, y0) 的總店,他想藉由擴張分店來賺最多的錢。

但是,為了維護每家商店的營運,除了總店以外,其他的分店在開張時必須要選一個店長,這個店長來自新分店開張之前的其中一個分店。由於翰翰非常有商業頭腦,他設立的非常嚴格的方法來創立分店,每次擴張新店的方法有很嚴格的限制。



更詳細一點來說,我們共有 k 種創立新店的方法:

每種方法用 x1, y1, x2, y2, val 五個數字來表示,代表滿足式子 x1 ≤ x ≤ x2 以及 y1 ≤ y ≤ y2 的任意兩個相異位置可以有店長派遣的關係,設立完的新分店價值 val 元。我們可以從滿足限制且已開張的店家 (x,y) 派一個店長到另一個滿足限制但還沒設立分店的位置。



翰翰依照以下的方法來創立分店:

1. 首先,他選了一些可以派遣店長且未設立分店的地方,沒有其他未設立分店的位置比設立這些分店的價值更大。
2. 如果只有一家價值最大的分店,那麼就將分店設立在那裡,否則,他先挑一個 x 座標最小的位置設立分店
3. 如果還是有很多個位置,那麼他會選 y 座標最小的位置設立分店
4. 注意,一家新分店可能用 k 種方法中很多方法都可以創立,翰翰當然會選這些方法中價值最大的那種~

我們就一直重複上面的方法,直到沒有任何滿足的新位置可以創立分店為止。

目前總店剛剛成立,翰翰想請你來幫他計算依照他的方法創立分店的總價值會是多少?

Input:Output:

輸入第一行有一個整數 t ,代表接下來有 t 筆測試資料。
每筆測試資料第一行有三個整數 n,m,k ,以空格分隔開來。
第二行有兩個整數 x0,y0 ,以空格分隔開。
接下來有 k 行,每行有五個整數 x1,y1,x2,y2,val ,以空格分隔開來,代表對每種創立新分店方法的描述。

限制:
t ≤ 10
n,m ≤ 109
k ≤ 800
1 ≤ x0 ≤ n
1 ≤ y0 ≤ m
1 ≤ x1 ≤ x2 ≤ n
1 ≤ y1 ≤ y2 ≤ m
0 ≤ val ≤ 109

對於 30 % 的測資滿足: n,m ≤ 100
對於每筆測試資料,請輸出一行整數,代表依照翰翰方法創立分店的總價值。
由於數字可能很大,請輸出這個數字除以 1000000007(109+7) 的餘數。

Sample Input:Sample Output:

1

3 3 3
3 3
2 2 3 3 1
1 2 2 3 2
1 1 1 3 5
16

HINT:

範測中,翰翰依序設立了以下的店家:

首先,總店設立在 (3,3)。
1. 在 (2,2) 設立一家分店,價值為 1。
2. 在 (1,2) 設立一家分店,價值為 2。
3. 在 (1,1) 設立一家分店,價值為 5。
4. 在 (1,3) 設立一家分店,價值為 5。
5. 在 (2,3) 設立一家分店,價值為 2。
6. 在 (3,2) 設立一家分店,價值為 1。

總價值共 16。

Problem Setter

Testdata:

TestTimeMemoryScore
01000ms262144kb
11000ms262144kb10
21000ms262144kb10
31000ms262144kb10
410000ms262144kb10
510000ms262144kb10
610000ms262144kb10
720000ms262144kb10
820000ms262144kb10
920000ms262144kb10
1020000ms262144kb10