ZROI244丁同學從小就養成了自覺學習的習慣

2022-09-10 00:27:23 字數 2363 閱讀 3098

其實有很多分是腦殘錯誤導致的(變數名敲錯了解一下),也有太弱導致的(本題連n^3dp都沒有想出來),不然起碼分數*2,還需要提高啊。中國少年先鋒隊第七次全國代表大會即將在北京召開,經過選拔和審核,來自海鹽縣實驗小學教育集團501班的丁某某同學作為嘉興市唯一少先隊員代表將出席本次大會,他也是海鹽縣出席全國少代會的第一人。昨天,丁某某起程前往北京參加中國少先隊代表大會。當丁某某同學到達北京之後,他在大街上看到了一排n

'>n

個建築。令第i

'>i

個建築的高度是h

i'>h

i,這個h

'>h

陣列是乙個1,2

,3,⋯

,n'>1,2

,3,⋯

,n1,

2,3,

⋯,n的排列。把他們排成一排後,定義第i

'>i

個建築是字首最優的當且僅當不存在某個j

hj>hi

'>j

hj>hi

。同樣地,我們定義第i

'>i

個建築是字尾最優的當且僅當不存在某個j

>i,

hj>hi

'>j

>i,

hj>hi

。丁某某想要這一排建築恰好有l

'>l

個字首最優和r

'>r

個字尾最優。

現在丁某某同學想要知道滿足條件的解有多少個,答案對109+

7'>109+

7取模。第一行三個正整數 n,l

,r'>n,l

,r一行乙個整數,表示答案模109+

7'>109+

7input

5 3 2
output
18
對於20

%'>20%

的資料,n≤10

'>n≤10

對於70

%'>70%

的資料,n

≤300

'>n

≤300

對於100

%'>

100%

的資料,n

≤5000,1

≤l,r

≤n'>n

≤50000,1

≤l,r

≤n≤50000,1

≤l,r

≤n時間限制:1

s'>1

s空間限制:512

mb'>512

首先,我們看70分的演算法(nlr),dp方程,f[i,j,k]表示選了前i大的數出來放,左邊有j個滿足字首最優,k個滿足字尾最優

根據這個我們就可以得出乙個神奇的方程f[i][j][k]=f[i-1][j-1][k]+f[i-1][j][k-1]+f[i-1][j][k]*(n-2)除非新加入的這個小的數放在左右兩端,否則對字首最優字尾最優不會產生貢獻。

我們進一步考慮優化,由於左和右的方案可見是對稱的,我們考慮只算其中乙個再組合數搞出另乙個。

那麼就有f[i,k]表示放一邊,且有k個滿足最優前字尾的方案數

方程f[i,k]=f[i-1][k]*(i-1)+f[i-1][k-1]

同理上面的方程

我們列舉第i+1個點為最高點,其左邊有i個點,那麼此時滿足題意可得(0<=i<=n-1)

ans+=c(n-1,i)*f[i,l-1]*f[n-i-1,l-1]

最大值固定,然後c(n-1,i)將i個數分配到最大值左右,然後由於最大值一定滿足最優前字尾,那麼對於i個數就是l-1,對於n-i-1個數就是r-1.這樣就做到n^2搞出來了。

70分code

//70分 code

#include#include#include#includeusing namespace std;

const int mod = 1000000007;

int n,l,r;

int f[305][305][305];

int main()

} }printf("%d",f[n][l][r]);

}

滿分code:
#include#include#define ll (long long)

using namespace std;

const int mod = 1000000007;

const int maxn = 5005;

int fac[maxn],inv[maxn];

int ksm(int a,int b)

int n,l,r;

int f[maxn][maxn];

int getc(int a,int b)

} int ans = 0;

for(int i=0;i<=n-1;i++)

printf("%d",ans);

}

ZROI 白銀御行

本題的男點大概在如何批量的計算兩個矩陣有交。設乙個矩陣的四個端點為 a,b,c,d 對於乙個矩陣 x,另乙個矩陣 y 和它有交,首先要滿足 y 的 a 在 x 的 d 左上方,如圖所示的四個區域,對於第 1 個區域已無問題。第二區發現如果 c 點在 1 內則有,否則無,無的情況正好是 y c x b...

ZROI 1254 迷宮 互動

互動題真難調 小 d 正在走迷宮。這個迷宮可以被看做 n nn 個點,m mm 條邊的連通無向圖。小 d 在每個點時,僅能夠看到這個點出發有多少條路。自然地,小 d 可以知道他是從第幾條路過來的。顯然,僅有這些資訊是不夠的。因此,小 d 決定給節點做一些標記 小 d 共可以做 k kk 種標記,每個...

ZROI 19 08 02 計算幾何

1.向量基礎知識 線段樹維護矩乘就好了,矩陣裡需要帶個常數字置。不會積分,告辭。2.簡單題 投影就是點積,直接積就行了,必修四怎麼學的。跟上面的一模一樣。叉積判出不共線的兩種,剩下的直接比較橫座標就可以了。平行向量叉積為 0 垂直向量點積為 0 跨立實驗 對於一條線段,看另一條線段的兩個點是否在它兩...