JZOJ 3 18 1509 普及模擬 單元格

2022-09-18 01:24:09 字數 1545 閱讀 7973

題目描述

在乙個r行c列的**裡,我們要選出3個不同的單元格。但要滿足如下的兩個條件:

(1)選中的任意兩個單元格都不在同一行。

(2)選中的任意兩個單元格都不在同一列。

假設我們選中的單元格分別是:a,b,c,那麼我們定義這種選擇的「費用」= f[a][b] + f[b][c] + f[c][a]。 其中f[a][b]是指單元格a到單元格b的距離,即兩個單元格所在行編號的差的絕對值 + 兩個單元格所在列編號的差的絕對值。例如:單元格a在第3行第2列,單元格b在第5行第1列,那麼f[a][b] = |3-5| + |2-1| = 2 + 1 = 3。至於f[b][c], f[c][a]的意義也是同樣的道理。現在你的任務是:有多少種不同的選擇方案,使得「費用」不小於給定的數mint,而且不大於給定的數maxt,即「費用」在【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

輸出樣例

枚舉行和列,

然後我們就可以得出乙個神奇的東西

(i+j-2)*2=三點的費用

先判斷是否在[min,max]區間裡,如果是,則:

就有6種擺點的方法:

①乙個點在三個點所形成的長方形上,其他兩個點都在邊上,所以就有(i-2)*(j-2)*4種方法。

②兩個點在頂點上,為對頂角,另一點就在任意一條邊上,所以就有(i-2)*(j-2)*2種方法。

化簡後得(i-2)*(j-2)*6種方法。

**如下:

var

i,j:longint;

ans,n,m,x,y:int64;

begin

assign(input,'table.in');

assign(output,'table.out');

reset(input);

rewrite(output);

readln(n,m,x,y);

fori:=3 to n do

begin

forj:=3 to m do

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

<=y) then

ans:=ans+(i-2)*(j-2)*(n-i+1)*(m-j+1)*6;

ans:=ans

mod1000000007;

end;

write(ans);

close(input);

close(output);

end.

JZOJ 3 18 1508 普及模擬 螞蟻

題目描述 在二維平面座標軸裡面,有n只螞蟻,第i只螞蟻所在的點的座標是 xi,yi 座標都是整數。所有螞蟻的移動速度都相等,都是每秒移動1個單位。每只螞蟻都有乙個固定的移動方向,是如下4種方向之一,都是平行於座標軸的 l n表示向北 即朝上 則y座標正方向。l e表示向東 即朝右 則x座標正方向。l...

JZOJ 3 18 1507 普及模擬 數列

題目描述 給定乙個等差數列,第一項是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到單元...