wsr的學校有b個男生和g個女生都來到乙個巨大的操場上掃地。
操場可以看成是n 行m 列的方格矩陣,如下圖(1)是乙個4 行5 列的方格矩陣。每個男生負責打掃一些連續的行,每個女生負責打掃一些連續的列。比如有兩個男生,第乙個男生負責第1、2 兩行、第二個男生負責第4 行,如圖(2)的藍色。打掃的區域可能重複,比如,又有兩個女生,第乙個女生負責打掃第3、4 兩列,第二個女生負責打掃第4、5 兩列,如圖(3)的紅色。從圖(3)可以容易看出,有顏色覆蓋的方格數為18,即這4 名學生總共打掃了18 個方格。
老師要wsr在學校給出打掃安排的資料後快速計算出這些學生總共打掃了多少方格?
輸入格式:
第一行4 個正整數:n,m,b,g,n 表示方陣行數,m 表示方陣列數,b 表示男生數,g 表示女生數。
接下來b 行,每行兩個整數x y。表示相應某個男生負責打掃從第x 行到第y行(共y-x+1 行),保證1≤x≤y≤n。
再接下來g 行,每行兩個整數x y。表示相應某個女生負責打掃從第x 列到第y 列(共y-x+1 列),保證1≤x≤y≤m。
輸出格式:
乙個整數,表示所打掃的面積。(即格仔的總數)
輸入樣例#1: 複製
4 5 2 2輸出樣例#1: 複製1 24 4
3 44 5
18不會可以自己畫圖。
資料範圍:
8 個的資料:n,m,b,g 的範圍都是[1…100]
2 個的資料:n,m,b,g 的範圍都是[1…5,000]
思路:模擬
#include#include#include
#include
using
namespace
std;
intn,m,b,g;
intx,y,ans;
int map[5010][5010
];int vis1[5010],vis2[5010
];int
main()
for(int i=1;i<=g;i++)
for(int i=1;i<=n;i++)
cout
}
洛谷 2692 覆蓋
wsr的學校有b個男生和g個女生都來到乙個巨大的操場上掃地。操場可以看成是n 行m 列的方格矩陣,如下圖 1 是乙個4 行5 列的方格矩陣。每個男生負責打掃一些連續的行,每個女生負責打掃一些連續的列。比如有兩個男生,第乙個男生負責第1 2 兩行 第二個男生負責第4 行,如圖 2 的藍色。打掃的區域可...
洛谷P1034矩形覆蓋
據說是dp,所以我用dfs,居然a了,資料真水 說說思路,我們要求覆蓋所有點且不能重疊,顯然我們要從點入手,我們可以列舉每個點被哪個矩形重疊,因為如果列舉矩形覆蓋點的話,貌似不可做,具體怎麼實現呢?最好小夥伴們手動畫個圖,一下就明白了,列舉每個點被哪個矩形覆蓋,那麼必然是要根據點的座標來調整矩形的位...
洛谷 P1990 覆蓋牆壁
你有乙個長為n寬為2的牆壁,給你兩種磚頭 乙個長2寬1,另乙個是l型覆蓋3個單元的磚頭。如下圖 0 0 0 00磚頭可以旋轉,兩種磚頭可以無限制提供。你的任務是計算用這兩種來覆蓋n 2的牆壁的覆蓋方法。例如乙個2 3的牆可以有5種覆蓋方法,如下 012 002 011 001 011 012 112...