正题

题目链接:https://www.luogu.com.cn/problem/P2150


题目大意

将2∼n2\sim n2∼n选出一些分成两个集合,要求这两个集合中没有一对数不是互质的。求方案数对ppp取模

2≤n≤500,1≤p≤10102\leq n\leq 500,1\leq p\leq10^{10}2≤n≤500,1≤p≤1010


解题思路

数据小的情况我们可以把所有质数拿出来状压,但是这里500500500质数还是很多的,所以我们不能直接这么搞。

平时我们质因数分解能够发现nnn分解后最多只有一个>n>\sqrt n>n​的质因子。这里n\sqrt nn​以内的质数只有888个好像可以搞。

枚举一个大于888的质数xxx,对于所有包含这个质因子的数两个集合中只能有一个存在,然后前888个状压,设fi,jf_{i,j}fi,j​分别表示两个集合中的前888个质数拥有的集合。显然转移的时候只需要满足i&j=0i\&j=0i&j=0即可。

然后对于拥有同一个大质数的所有数字只能有一个集合选择,f0i,jf0_{i,j}f0i,j​表示第一个集合选,f1i,jf1_{i,j}f1i,j​表示第二个集合选,然后做完之后fi,j=f0i,j+f1i,j−fi,jf_{i,j}=f0_{i,j}+f1_{i,j}-f_{i,j}fi,j​=f0i,j​+f1i,j​−fi,j​就好了。

时间复杂度O(n282)O(n2^{8^2})O(n282)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
const ll N=510,M=256;
ll pri[8]={2,3,5,7,11,13,17,19};
ll n,P,s[N],f[M][M],f0[M][M],f1[M][M],ans;
vector<int>p[N];
signed main()
{scanf("%lld%lld",&n,&P);for(ll i=2;i<=n;i++){ll x=i;for(ll j=0;j<8;j++)if(x%pri[j]==0){s[i]|=(1<<j);while(x%pri[j]==0)x/=pri[j];}p[x].push_back(i);}f[0][0]=1;for(ll x=1;x<=500;x++){if(!p[x].size())continue; for(ll y=0;y<p[x].size();y++){if(y==0||x==1){memcpy(f0,f,sizeof(f0));memcpy(f1,f,sizeof(f1));}ll c=p[x][y];for(ll i=255;i>=0;i--)for(ll j=255;j>=0;j--){if(i&j)continue;if(!(s[c]&j))(f0[i|s[c]][j]+=f0[i][j])%=P;if(!(s[c]&i))(f1[i][j|s[c]]+=f1[i][j])%=P;}if(y!=p[x].size()-1&&x!=1)continue;for(ll i=0;i<256;i++)for(ll j=0;j<256;j++)f[i][j]=(f0[i][j]+f1[i][j]-f[i][j])%P;}}for(ll i=0;i<256;i++)for(ll j=0;j<256;j++)(ans+=f[i][j])%=P;printf("%lld\n",(ans+P)%P);return 0;
}

P2150-[NOI2015]寿司晚宴【dp】相关推荐

  1. P2150 [NOI2015]寿司晚宴

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  2. [NOI2015]寿司晚宴(状压dp)

    为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴.小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1,其中第种 ...

  3. [NOI2015]寿司晚宴(状态压缩动态规划)

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

  4. BZOJ4197: [Noi2015]寿司晚宴

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

  5. BZOJ4197 [Noi2015]寿司晚宴 【状压dp】

    题目链接 BZOJ4197 题解 两个人选的数都互质,意味着两个人选择了没有交集的质因子集合 容易想到将两个人所选的质因子集合作为状态\(dp\) \(n\)以内质数很多,但容易发现\(\sqrt{n ...

  6. [NOI2015] 寿司晚宴(状压DP)

    洛谷题目传送门 解题思路 首先考虑30pts的做法 因为两人选的数必须互质,因此可以想到只要维护二者没有共同质因子就行了 因为质因子个数很少,考虑状压DP 设 dp[S][T] 表示 A选了数的质因子 ...

  7. NOI2015 寿司晚宴

    题目链接:戳我 30pts还是很好写的,因为30以内的质因数就没有几个,直接状压就可以了. 但是如果范围扩大到500呢?我们考虑后面的数怎么处理. 首先观察到19之后的数最多只能出现一次,那么我们直接 ...

  8. NOI 2015 寿司晚宴

    4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 813 Solved: 508 [Submit][Status] ...

  9. 周末狂欢赛4(1-02E. JM的西伯利亚特快专递,寿司晚宴,荷马史诗)

    文章目录 T1:1-02E. JM的西伯利亚特快专递 题目 题解 code T2:寿司晚宴 题目 题解 code T3:荷马史诗 题目 题解 code T1:1-02E. JM的西伯利亚特快专递 题目 ...

  10. Bzoj4197 寿司晚宴

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

最新文章

  1. DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (IDispatch error #102)
  2. iPhone12要来了,苹果第一款5G手机,哪些值得期待?
  3. python 程序流程控制结构-Python基础—程序控制结构
  4. include的两种形式、CPP的搜索路径
  5. 如何设计一个良好的接口?
  6. rhel系统启动过程_Linux系统启动过程分析
  7. Codeforces525E Anya and Cubes(双向搜索)
  8. NutUI 2.1.0 发布,移动端轻量级 Vue 组件库
  9. java算法是什么_什么是java算法
  10. (四十七) 蓝牙自拍杆原理学习
  11. Jmeter-使用http proxy代理录制脚本
  12. [PTA]实验5-6 使用函数判断完全平方数
  13. 项目开发过程中业务流程图的绘制
  14. Redmi K30 Pro 标准版更换相机后魔改为变焦版过程
  15. 为什么BAT公司宁愿花25K重新招人,也不愿花20K留住老员工?
  16. 浅谈面试中常提到的乐观锁与悲观锁
  17. [渝粤教育] 商丘职业技术学院 Java Web应用程序开发 参考 资料
  18. 判断一个数是否为四叶玫瑰数_python
  19. 学习 Python 编程的 11 个受用终身的技巧
  20. 全球第二款3D打印药物!三迭纪产品获美国FDA新药临床试验批准

热门文章

  1. python execute_command err_Python management.execute_from_command_line方法代碼示例
  2. matlab自带kpca,求对矩阵进行PCA或者KPCA特征提取的matlab代码
  3. xps13安装linux系统,[操作系统]Dell XPS 13 (9360)安装配置 ubuntu 16.04 实现 win10 Linux双系统...
  4. libaio.so.1 mysql_libaio.so.1()(64bit) is needed by MySQL-server
  5. vue ref 绑定的事件需要移除吗_Vue易遗忘的基础复习(二)
  6. qt 从文件中读出数据显示在表格中_QT中有什么控件可以实现向excel的表格显示,qt数据存储到Excel表格...
  7. java并发之线程池
  8. [SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole
  9. [C++11]decltype在泛型编程中的使用举例
  10. python docx runs_别再问我Python怎么操作Word了!