問題描述:
今天czy又找到了三個妹子,有著收藏愛好的他想要找三個地方將妹子們藏起來,將一片空地抽象成乙個r行c列的**,czy要選出3個單元格。但要滿足如下的兩個條件:
(1)任意兩個單元格都不在同一行。
(2)任意兩個單元格都不在同一列。
選取格仔存在乙個花費,而這個花費是三個格仔兩兩之間曼哈頓距離的和(如(x1,y1)和(x,y2)的曼哈頓距離為|x1-x2|+|y1-y2|)。狗狗想知道的是,花費在mint到maxt之間的方案數有多少。
答案模1000000007。所謂的兩種不同方案是指:只要它選中的單元格有乙個不同,就認為是不同的方案。
輸入格式:
一行,4個整數,r、c、mint、maxt。3≤r,c≤4000, 1≤mint≤maxt≤20000。
對於30%的資料, 3≤r, c≤70。
輸出格式:
乙個整數,表示不同的選擇方案數量模1000000007後的結果。
輸入輸出樣例:
輸入樣例
3 3 1 20000
3 3 4 7
4 6 9 12
7 5 13 18
4000 4000 4000 14000
輸出樣例
做法很簡單,找規律即可。
大概做了乙個小時,正常耗時。
**實現:
1 #include2 #include3#define mod 1000000007
4using
namespace
std;
5long
long
n,m,l,r,ans;
6long
long a[8010],b[8010];7
intmain()
本題我的方法應該不是正統的正解,正解應該是根據九宮格的特點推廣。
luoguU48574 藏妹子之處
題目鏈結 首先,因為這是曼哈頓距離,所以很容易就可以將這三個點之間的距離轉化為乙個矩形,那麼這三個點在矩形上的分布只有六種可能。假設當前矩形的長為n,寬為m。那麼可以發現,無論是哪一種情況,這三個點在這個矩形裡的擺放方案都是 n 2 m 2 並且這些擺放方案與這個矩形的位置無關,所以可以先不考慮位置...