[SDOI2010]地精部落 题解
题目大意
已知一个长度为 的排列 满足对于任意的 都有 或者 ,求满足条件的排列的数量除以 所得到的余数( 不一定是质数 ).
题目解析
考虑 DP.
但是我们发现由于限制我们很难进行递推,所以我们设 代表选择 的个数,并且这些序列都必须满足第一个数字比第二个大。显然我们发现答案就是 .
我们设第 个数字放在第 个位置.因为 是最大的数字,所以 一定是奇数. 而原来的 个数字我们可以任选 个放在前面,所以还要乘上 。
不难得到:
这样就可以做到 的时间复杂度了.
当然我们发现由于 不是质数,所以我们不能通过逆元来求解。并且我们发现如果直接用杨辉三角预处理的话会 MLE,所以我们需要滚动数组。(计算 的时候只需要知道 )这个时候空间复杂度就是 的。
代码:
#include<cstdio> #define db double #define pc putchar #define U unsigned #define ll long long #define ld long double #define ull unsigned long long #define Me(a,b) memset(a,b,sizeof(a)) template<typename _T> _T mabs(_T a){ return a>0?a:-a; } template<typename _T> _T mmax(_T a,_T b){ return a>b?a:b; } template<typename _T> _T mmin(_T a,_T b){ return a<b?a:b; } template<typename _T> void mswap(_T &a,_T &b){ _T tmp=a; a=b; b=tmp; return; } template<typename _T> void print(_T x){ if(x<0) putchar('-'),x=-x; if(x>9) print(x/10); putchar((x%10)+48); return; } #define EPS (1e-7) #define INF (0x7fffffff) #define LL_INF (0x7fffffffffffffff) #define maxn 4239 #define Type int using namespace std; Type read(){ char c=getchar(); Type s=0; int flag=0; while((c<'0'||c>'9')&&c!='-') c=getchar(); if(c=='-') c=getchar(),flag=1; while('0'<=c&&c<='9'){ s=(s<<1)+(s<<3)+(c^48); c=getchar(); } if(flag) return -s; return s; } int n; ll f[maxn],c[2][maxn],p; int main(){ //freopen(".in","r",stdin); //freopen(".out","w",stdout); n=read(); p=read(); f[0]=f[1]=1; c[0][0]=c[1][0]=c[1][1]=1; int i,j; for(i=2;i<=n;i++){ for(j=1;j<i;j+=2) f[i]+=f[j]*f[i-j-1]%p*c[(i-1)&1][j]%p,f[i]%=p; for(j=1;j<i;j++) c[i&1][j]=(c[(i-1)&1][j]+c[(i-1)&1][j-1])%p; c[i&1][i]=1; } print(f[n]*2%p); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具