3884 NOIP2014模擬 電影院

2021-10-03 11:34:59 字數 1887 閱讀 8696

成對成對的人生贏家要去看電影了啦!身為fff團的骨幹,你當然不能坐視不管。但為首的人生贏家小w實在太神辣,你只敢搞一些小動作。

土豪小w包下了電影院的乙個包廂,其中有 n 排 m 列座位;相應的,看電影的人共有 nm/2 對。你無力阻止一對人生贏家坐在同一排(這是他們的底線)(m是乙個偶數),但你可以想辦法讓每一對情侶都不相鄰。求方案數 mod p 的值。

三個數 n, m , p

每一對情侶在同一排但不相鄰的安排方案數 mod p 的值。

2 4 10007
384

【樣例說明】假設四對人生贏家分別是s-t,u-v,w-x,y-z

┏━━┓

┃sutv┃

┃wyxz┃  是一種基本方案

┗━━┛

將四對人生贏家任意互換,再將大小寫字母任意互換,產生 4!*2^4=384 種合法方案。

推了推式子沒推出來,實際上,ans(n,m)=ans(1,m)^n*(nm/2)!*2^(nm/2)

先是一列的方案數的n次方,表示n行的不同的排列的方案(沒有標號的)

(nm/2)!就是將每對情侶標號排列的方案數

再乘上2^(nm/2)是每對情侶的兩個人的位置互換或者說是將每對情侶的兩個人再標號的方案

那麼問題轉換為求一行的方案數

我們可以維護 f[i][j]表示某一行已有 i 對情侶其中 j 對相鄰 的方案數,則 f[n][0]即為答案,狀態數 n^2,轉移複雜度 o(n),時間複雜度 n^2。

f[i][j]=f[i-1][j+2]*(j+2)*(j+1) //插入的當前一對情侶不相鄰,均插入到某一對情侶中的情況

+f[i-1][j+1]*(j+1)*(i+i-j-2)*2 //插入的當前一對情侶不相鄰其中乙個插入到某一對情侶中情況

+f[i-1][j]*(i+i-j-1)*(i+i-j-2) //插入的當前一對情侶不相鄰,但未插入到某一對情侶中的情況

+f[i-1][j]*j*2 //插入的當前一對情侶相鄰,但未插入到某一對情侶中的情況

+f[i-1][j-1]*(i+i-j)*2; //當 j>0 時,插入當前一對情侶到某一對情侶中的情況

對於 100%的資料 令 ans(m)=ans(1,m),觀察 ans(m)的前幾項不難得到 ans(m) = (4m2 − 2m) ∗ ans(m − 1) + (2m − 2) ∗ ans(m − 2)

歸納後得到 ans(n,m)=2^n*(nm)!*a(m)n 其中 a(0) = 1 a(1) = 0 a(n) = (2n − 1) ∗ a(n − 1) + a(n − 2) 遞推求解就能很好地滿足題目的要求。

#include#include#define i int

#define ll long long

#define f(i,a,b) for(register int i=a;i<=b;++i)

#define fd(i,a,b) for(register int i=a;i>=b;--i)

#define n 10000004

using namespace std;

ll n,m,p,f[n],ans;

ll ksm(ll x,ll k)

return sum;

}i main()

f[0]=1;f[1]=0;

f(i,2,m) f[i]=((ll)(i*2ll-1ll)*f[i-1]%p+f[i-2])%p;

ans=ksm(f[m],n);

f(i,1,m*n) ans=(ans*(ll)i*2ll)%p;

printf("%lld\n",ans);

return 0;

}

noip2014 螺旋矩陣 (模擬)

p1913螺旋矩陣 accepted 標籤 noip普及組2014 乙個 n 行 n 列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第 1 行第 1 列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中 依次填入 1,2...

NOIP2014模擬11 3 蛋糕

今天是bessie的生日,他買了乙個蛋糕和朋友們一起分享,蛋糕可以看成是乙個r行c列的 共有r c個格仔,每個格仔都有乙個0至9的數字,表示該格仔蛋糕擁有的巧克力。現在bessie要把蛋糕橫的切3刀再豎的切3刀,由於bessie刀法厲害,所以每個格仔蛋糕都是完整的,顯然蛋糕會被切成16份,然後bes...

NOIP2014 比例簡化 模擬

輸入檔案 ratio.in輸出檔案 ratio.out簡單對比 時間限制 1 s 記憶體限制 256 mb 在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結...