NOI2015 壽司晚宴

2022-05-13 13:41:38 字數 2278 閱讀 9879

為了慶祝 noi 的成功開幕,主辦方為大家準備了一場壽司晚宴。小 g 和小 w 作為參加 noi 的選手,也被邀請參加了壽司晚宴。

在晚宴上,主辦方為大家提供了 n−1

'>n−1n−1 種不同的壽司,編號 1,2

,3,…

,n−1

'>1,2,3,…,n−11,2,3,…,n−1 ,其中第 i

'>ii 種壽司的美味度為 i+1

'>i+1i+1 (即壽司的美味度為從 2

'>22 到 n

'>nn )。

現在小 g 和小 w 希望每人選一些壽司種類來品嚐,他們規定一種品嚐方案為不和諧的當且僅當:小 g 品嚐的壽司種類中存在一種美味度為 x

'>xx 的壽司,小 w 品嚐的壽司中存在一種美味度為 y

'>yy 的壽司,而 x

'>xx 與 y

'>yy 不互質。

現在小 g 和小 w 希望統計一共有多少種和諧的品嚐壽司的方案(對給定的正整數 p

'>pp 取模)。注意乙個人可以不吃任何壽司。

輸入檔案的第 1

'>11 行包含 2

'>22 個正整數 n,p

'>n,pn,p ,中間用單個空格隔開,表示共有 n

'>nn 種壽司,最終和諧的方案數要對 p

'>pp 取模。

輸出一行包含 1

'>11 個整數,表示所求的方案模 p

'>pp 的結果。

input

3 10000

output

input

4 10000

output

input

100 100000000

output

測試點編號

n'>n的規模約定1

2≤n≤

30'>2≤n≤30

01000000000

'>042≤n

≤100

'>2≤n≤10056

2≤n≤

200'>2≤n≤20078

2≤n≤

500'>2≤n≤500910

時間限制:1

s'>1s

空間限制:512

mb'>512mb

狀壓dp

很容易就想到只要兩個集合中沒有相同的質因數就滿足條件了

注意,每個數中》sqrt(500)的數最多只有乙個!!

於是,我們可以列舉出列dp:f[i][j][k]表示選到第i個數,a的狀態為j,b的狀態為k的方案數

然後呢?

我們對i分解質因數,並記錄最大的質數以及它的狀態

如:138=2*3*23,所以它的最大的質數為23,狀態為3(二進位制為11000000)

於是,f[i][j][k]+=f[i-1][j][k],f[i][j|s[i]][k]+=f[i-1][j][k],f[i][j][k|s[i]]+=f[i-1][j][k],

大質數的情況特判一下就好了

#include #include 

using

namespace

std;

int i,j,k,n,m,x,y,t,mod,prime[9],f[510][1

<<8][1

<<8][3

];struct datap[501

];inline

bool cmp(const data&a,const data&b)

int add(int &x,int y)

intmain()

p[i].bi=te;

}sort(p+2,p+1+n,cmp);f[1][0][0][0]=1

;

for (i=2;i<=n;i++)

for (j=0;j<(1

<<8);j++)

for (k=0;k<(1

<<8);k++)

else

if (f[i-1][j][k][1])

if (f[i-1][j][k][2])}}

}int ans=0;for (i=0;i<(1

<<8);i++)for (j=0;j<(1

<<8);j++)if ((i&j)==0)for (k=0;k<=2;k++)add(ans,f[n][i][j][k]);

printf(

"%d\n

",ans);

return0;

}

NOI 2015 壽司晚宴

description 為了慶祝 noi 的成功開幕,主辦方為大家準備了一場壽司晚宴。小 g 和小 w 作為參加 noi 的選手,也被邀請參加了壽司晚宴。在晚宴上,主辦方為大家提供了 n 1 種不同的壽司,編號 1,2,3,n 1,其中第 i 種壽司的美味度為 i 1 即壽司的美味度為從 2 到 n...

NOI 2015 壽司晚宴

4197 noi2015 壽司晚宴 time limit 10 sec memory limit 512 mb submit 813 solved 508 submit status discuss description 為了慶祝 noi 的成功開幕,主辦方為大家準備了一場壽司晚宴。小 g 和小 ...

NOI2015 壽司晚宴

題目 這是一篇需要龜速乘的思博題解 我們考慮一下 n leq 30 的睿智暴力,顯然質因數個數少得一批,互質的條件又等價於沒有公共的質因子,所以我們直接狀壓質因子,dp i s 1 s 2 表示前 i 個數考慮完了,第乙個人選擇的質因子狀態為 s 1 第二個人選擇的質因子狀態為 s 2 轉移的話就考...