日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解题报告 Valentine‘s seat

發布時間:2023/11/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解题报告 Valentine‘s seat 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1.??????? 題目

1Valentine’s Seat(seat)

描述

今天是情人節的前一天,小杉還在電影院打工(慘啊)。

老板很懂得情人節的情調,要小杉提前做好準備,那么現在給小杉的任務是對電影院的座椅上色。

電影院總共n+1m+1列的椅子排成一個矩陣。第一行的椅子已經全部上了粉紅色,第一列從第二個開始的椅子已經全部上了天藍色。

一個可愛的上色方案應該滿足除了第一行第一列以外,對任意的一個椅子,它的顏色應當和它左邊的一把椅子(同行)或上面的一把椅子(同列)顏色相同。

小杉現在想知道總共有多少種可愛的上色方案。

輸入格式

一行兩個整數n,m(1<=n,m<=3000)

輸出格式

僅有一行,一個整數,為上色方案數對19900801取模的結果

樣例輸入

1 1

樣例輸出

2

樣例解釋

唯一可上色的一把椅子,不是粉紅就是天藍,怎樣都是可愛的

?

2.??????? 題目實質

求一種特殊的 01 矩陣。

3.??????? 算法

遞推,其實這也是一個數學題。

抽象出模型,就是01矩陣的問題,問題即為求最上一行全是1,最左一列全是001矩陣,任意一個元素與其前趨或上繼相同的情況數。而這種情況等價于任意一行的0的個數大于等于上一行的0的個數(假如比上一行少的話,上一行多出的0的下繼為1,這個1不滿足題意)。

接下來就很簡單了,我們令f[n,k]為第n+1行有k+10的情況,則

f[n,k]=sum{f[n-1,j]}(j=1..k)

簡單變換得

f[n,k]=f[n-1,k]+f[n,k-1]

初始狀態為f[0,0]=1,結果為f[n,m] (f[n,m]=sum{f[n-1,j]}(j=1..m))

空間限制的問題,使用滾動數組可以解決。

其實仔細觀察的話,會發現結果就是C(n+m,n)

注意 n=0 ( 0 ) ,或是 k=0 (這一行這有最邊上那一個零) f=1

?

4.??????? 注意事項

話說這個題我的式子推對了,初始化打錯了 XD

所以,注意初始化啊啊。

5.??????? 時空復雜度

O(n,m)

6.??????? 程序代碼

LZYstd? pascal

const

?k=19900801;

var

?a:array[0..3000,0..3000]of longint;

?n,m:longint;

?i,j:longint;

?

begin

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

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

readln(n,m);

for i:=1 to n do a[i,0]:=1;

for i:=1 to m do a[0,i]:=1;?? //此處第一行為第 0

?

for i:=1 to n do begin

?for j:=1 to m do begin

? a[i,j]:=(a[i-1,j]+a[i,j-1])mod k;

?end;

end;

?

if(a[n,m]<0)then writeln(a[n,m]+k) else writeln(a[n,m]);? //防止 mod 過頭

close(input);

close(output);

end.

轉載于:https://www.cnblogs.com/SueMiller/archive/2011/08/09/2132317.html

總結

以上是生活随笔為你收集整理的解题报告 Valentine‘s seat的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。