社区讨论
状压部分分求助,悬关
P2150[NOI2015] 寿司晚宴参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @logzz3tm
- 此快照首次捕获于
- 2023/11/02 17:41 2 年前
- 此快照最后确认于
- 2023/11/02 19:48 2 年前
想打个30分的部分分,结果连样例一都没过,调了好久都调不出来
CPP#include <bits/stdc++.h>
using namespace std;
#define N 10
int n,p;
int f[505]={0,0,1,2,1,4,3,8,1,2,5,16,3,32,9,6,1,64,3,128,5,10,17,256,3,4,33,2,9,512,7,1024};
long long dp[2][1<<N+1][1<<N+1],ans;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int s1=0,s2=1;
cin>>n>>p;
dp[0][0][0]=1;
for(int i=2;i<=n+1;i++)
{
s1++,s2++;
s1%=2;s2%=2;
for(int j1=0;j1<=1<<N;j1++)
for(int j2=0;j2<=1<<N;j2++)
{
if(j1&j2) continue;
if((f[i]&j2)==0) (dp[s1][(f[i]|j1)][j2]+=dp[s2][j1][j2])%=p;
if((f[i]&j1)==0) (dp[s1][j1][(j2|f[i])]+=dp[s2][j1][j2])%=p;
// if(())
}
}
for(int j1=0;j1<=1<<N;j1++)
for(int j2=0;j2<=1<<N;j2++)
ans+=dp[s1][j1][j2]%p;
cout<<ans;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...