jzoj P1509 普及模擬 單元格

2021-07-28 22:37:54 字數 1270 閱讀 2632

題目大意:

在乙個r行c列的**要選出3個不同的單元格a,b,c。定義這種選擇的「費用」= f[a][b] + f[b][c] + f[c][a],f[x][y]是指x到y的距離,即x,y所在行編號的差的絕對值 + x,y所在列編號的差的絕對值。求出在min~max費用範圍內有多少個這種選擇。

題解:

ans:=6* (r-2) * (c-2) * (r-i+1) * (c-j+1);

1.因為其實單元格可以看做乙個個點,而單元格a,b,c三個點可以構成乙個三角形,這個三角形所處位置是乙個矩形,而推理可知矩形的周長就是它的費用,如果他的費用在min~max之間就進行下一步。

2.對於乙個矩形,題目要求都不在點同一行同一列所以矩形的構成這時有2種情況:

(1)乙個點在端點上,2個點分別在這個點在矩形中所不相鄰的2條邊上,這時候有1 * (r-2)* (c-2)中情況。

以上因為矩形端點有4個,所以情況要* 4,為4 * (r-2) * (c-2)。

(2)2個點在端點上,這時候因為題意不能有2點在同一列或同一行,所這2個點矩形的對角線,而這個時候矩形的4條邊都不能出現第3個點,這時候點在這條對角線構成的矩形中,有(r-2) * (c-2)的情況。

以上因為矩形有2條對角線,所以情況要 * 2,為2 * (r-2) * (c-2)

2種情況相加得來構成這種矩形的3個點方案情況有6*(r-2) * (c-2)種,然後求出在**中這種矩形的數量(r-i+1) * (c-j+1)相乘,累加,取模就是答案。

時間複雜度:o(n^2)

var

x,y,i,j:longint;

r,c,ans:int64;

begin

assign(input,'table.in');reset(input);

assign(output,'table.out'); rewrite(output);

readln(r,c,x,y);

fori:=3 to r do

begin

forj:=3 to c do

if (i+j-2)*2>=x then

if (i+j-2)*2

<=y

then ans:=ans+6*(i-2)*(j-2)*(r-i+1)*(c-j+1);

ans:=ans

mod1000000007;

end;

writeln(ans);

close(input); close(output);

end.

1509 普及模擬 單元格

在乙個r行c列的 裡,我們要選出3個不同的單元格。但要滿足如下的兩個條件 1 選中的任意兩個單元格都不在同一行。2 選中的任意兩個單元格都不在同一列。假設我們選中的單元格分別是 a,b,c,那麼我們定義這種選擇的 費用 f a b f b c f c a 其中f a b 是指單元格a到單元格b的距離...

jzoj P1507 普及模擬 數列

題目描述 給定乙個等差數列,第一項是a,從第二項開始,每項與前一項的差都是乙個定值b。如果用數學形式來表示,那麼可以表示成 a b x 其中 x 0,且是整數。例如 a 1,b 2,那麼這個等差數列就是 1,3,5,7,9 再給定乙個等比數列,第一項是c,從第二項開始,每項是前一項的d倍。如果用數學...

數學 (JZOJ) 普及模擬 單元格

題目描述 在乙個r行c列的 裡,我們要選出3個不同的單元格。但要滿足如下的兩個條件 1 選中的任意兩個單元格都不在同一行。2 選中的任意兩個單元格都不在同一列。假設我們選中的單元格分別是 a,b,c,那麼我們定義這種選擇的 費用 f a b f b c f c a 其中f a b 是指單元格a到單元...