單元格(模擬)

2021-10-03 01:13:02 字數 1835 閱讀 8643

題目描述

在乙個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後的結果。

樣例輸入

【樣例1】

3 3 1 20000

【樣例2】

3 3 4 7

【樣例3】

4 6 9 12

【樣例4】

7 5 13 18

【樣例5】

4000 4000 4000 14000

樣例輸出

【樣例1】

6【樣例2】

0【樣例3】

264【樣例4】

1212

【樣例5】

859690013

思路

對於一種選擇,其實際答案為2*(maxx-minx+maxy-miny),即a,b,c三點組成的矩形的周長,a,b,c三點一共有六種方式組成乙個相同的矩形,因此列舉每種矩形組成方式求解即可

**實現

#pragma gcc optimize(3,"ofast","inline")

#include

using

namespace std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

int n=

1e5+5;

const

int m=

10005

;const

int inf=

0x3f3f3f

;const ull sed=31;

const ll mod=

1e9+7;

const

double eps=

1e-8

;const

double pi=

acos(-

1.0)

;typedef pair<

int,

int>p;

int r,c,mint,maxt;

intmain()

}printf

("%lld\n"

,ans)

;return0;

}

1509 普及模擬 單元格

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

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

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

labview 活動單元格 活動單元格屬性

短名稱 activecell 必需 基礎軟體包 類 多列列表框類的屬性 用途 建立屬性。設定活動單元格的行和列。名稱說明 行設定活動單元格的行。取值範圍為0至n,n為行數 1。輸入 2可選擇所有行。列設定活動單元格的列。取值範圍為0至m,m為列數 1。輸入 2可選擇所有列。輸入 1可選擇列首。下表為...