传送门

分析

我们发现对于大于$\sqrt(n)$的数每个数最多只会包含一个

所以我们把每个数按照大质数的大小从小到大排序

我们知道对于一种大质数只能被同一个人取

所以f1表示被A取,f2表示被B取

最终答案就是这两个的答案减去啥都不去的答案

因为啥都不去会被重复记录两次

对于小质数则直接状压转移即可

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define int long long
const int p1[] = {,,,,,,,,};
const int cnt1 = ;
int dp[][],n,mod,f1[][],f2[][];
struct node {
int msk,ano;
};
node d[];
inline void init(int x){
int res=x+;
for(int i=;i<=cnt1;i++){
if(res==)break;
if(res%p1[i]==)d[x].msk|=(<<(i-));
while(res%p1[i]==)res/=p1[i];
}
d[x].ano=res;
}
inline bool cmp(const node x,const node y){return x.ano<y.ano;}
signed main(){
int i,j,k,p,q;
scanf("%lld%lld",&n,&mod);
n--;
for(i=;i<=n;i++)init(i);
sort(d+,d+n+,cmp);
dp[][]=;
for(i=;i<=n;i++){
if(d[i].ano==||d[i].ano!=d[i-].ano){
memcpy(f1,dp,sizeof(f1));
memcpy(f2,dp,sizeof(f2));
}
for(j=(<<)-;j>=;j--)
for(k=(<<)-;k>=;k--)if(!(j&k)){
int msk1=j|d[i].msk,msk2=k|d[i].msk;
if(!(msk1&k))f1[msk1][k]=(f1[msk1][k]+f1[j][k])%mod;
if(!(msk2&j))f2[j][msk2]=(f2[j][msk2]+f2[j][k])%mod;
}
if(d[i].ano==||d[i].ano!=d[i+].ano||i==n){
for(j=(<<)-;j>=;j--)
for(k=(<<)-;k>=;k--)if(!(j&k)){
dp[j][k]=(-dp[j][k]+mod)%mod;
dp[j][k]=(dp[j][k]+f1[j][k])%mod;
dp[j][k]=(dp[j][k]+f2[j][k])%mod;
}
}
}
int Ans=;
for(j=;j<(<<);j++)
for(k=;k<(<<);k++)
if(!(j&k))Ans=(Ans+dp[j][k])%mod;
cout<<Ans;
return ;
}

p2150 [NOI2015]寿司晚宴的更多相关文章

  1. 洛谷$P2150\ [NOI2015]$寿司晚宴 $dp$

    正解:$dp$ 解题报告: 传送门$QwQ$. 遇事不决写$dp$($bushi$.讲道理这题一看就感觉除了$dp$也没啥很好的算法能做了,于是考虑$dp$呗 先看部分分?$30pts$发现质因数个数 ...

  2. UOJ #129 / BZOJ 4197 / 洛谷 P2150 - [NOI2015]寿司晚宴 (状压dp+数论+容斥)

    题面传送门 题意: 你有一个集合 \(S={2,3,\dots,n}\) 你要选择两个集合 \(A\) 和 \(B\),满足: \(A \subseteq S\),\(B \subseteq S\), ...

  3. 并不对劲的bzoj4197:loj2131:uoj129:p2150:[NOI2015]寿司晚宴

    题目大意 有两个集合\(S_1,S_2 \subseteq [2,n] (n\leq 500)\),且对于\(\forall x\in S_1,y\in S_2 , gcd(x,y)=1\) 求\(S ...

  4. [BZOJ4197][Noi2015]寿司晚宴

    4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 412  Solved: 279[Submit][Status] ...

  5. BZOJ 4197: [Noi2015]寿司晚宴( dp )

    N^0.5以内的质数只有8个, dp(i, j, k)表示用了前i个大质数(>N^0.5), 2人选的质数(<=N^0.5)集合分别为j, k时的方案数. 转移时考虑当前的大质数p是给哪个 ...

  6. BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划

    BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被 ...

  7. [NOI2015]寿司晚宴 --- 状压DP

    [NOI2015]寿司晚宴 题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴. 小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿 ...

  8. 【BZOJ4197】[Noi2015]寿司晚宴 状压DP+分解质因数

    [BZOJ4197][Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴 ...

  9. [UOJ#129][BZOJ4197][Noi2015]寿司晚宴

    [UOJ#129][BZOJ4197][Noi2015]寿司晚宴 试题描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司 ...

随机推荐

  1. 实体对象,List泛型 转换为DataTable

    /// <summary>        /// 实体对象转换DataTable        /// </summary>        /// <param name ...

  2. nmon的使用

    Linux性能评测工具之一:nmon篇 分类: 敏捷实践2010-06-08 11:27 7458人阅读 评论(0) 收藏 举报 工具linuxfilesystemsaixx86excel   目录( ...

  3. oracle fn project 开源faas 框架

    1. 介绍 Fn is an event-driven, open source, functions-as-a-service compute platform that you can run a ...

  4. GZip压缩与解压缩

    GZIP的压缩与解压缩代码: public static class CompressionHelper { /// <summary> /// Compress the byte[] / ...

  5. JS、Jquery获取浏览器和屏幕各种高度宽度

    网页可见区域宽:document.body.clientWidth网页可见区域高:document.body.clientHeight网页可见区域宽:document.body.offsetWidth ...

  6. spark-shell与scala生成parquet文件

    spark-shell用户 spark-shell只能spark用户来进行初始化,如果用hdfs或者root将会卡在spark-shell的初始化那个地方.可以用这两个用户来验证spark安装时成功地 ...

  7. php无wsdl webservice服务用法

    服务端: <?php class test { function add($a,$b) { return $a+$b; } } function getUserInfo($name) { ret ...

  8. 参数化防SQL注入

    private void AddStudent(){ string strName =txtName.Text.Trim(); string strPwd = txtPwd.Text.Trim(); ...

  9. FPGA前世今生(二)

    上期我们介绍了关于FPGA内部最基本的结构,在quartus下可以看到整体的结构. 这是在平面规划图下看到的结构,其中蓝色的小格代表一个LAB.四周边上浅棕色的小格代表IO口. 这是一个LAB的内部结 ...

  10. springboot成神之——发送邮件

    本文介绍如何用spring发送邮件 目录结构 依赖 MailConfig TestController 测试 本文介绍如何用spring发送邮件 目录结构 依赖 <dependency> ...