[BZOJ4197][Noi2015]寿司晚宴
4197: [Noi2015]寿司晚宴
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 412 Solved: 279
[Submit][Status][Discuss]
Description
为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。
Input
输入文件的第 1 行包含 2 个正整数 n,p,中间用单个空格隔开,表示共有 n 种寿司,最终和谐的方案数要对 p 取模。
Output
输出一行包含 1 个整数,表示所求的方案模 p 的结果。
Sample Input
Sample Output
HINT
2≤n≤500
Source
30分做法:
考虑对于每个质数状压DP,f[i][j]表示第一个人选取集合为i,第二个人选取集合为j的方案数。比较简单的DP。
100分做法:
对于大于$\sqrt n$的质数,每个数至多包含1个这样的因子,所以可以对小于$\sqrt n$的质数,这样的数至多有8个。
对于每个数,对其大于$\sqrt n$的质因子分类,分别做DP即可。dp[i][j][2]表示第一个人选取集合为i,第二个人选取集合为j,质因子分给第i个人的方案数。
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
int f[<<][<<],n,mod,dp[<<][<<][];
int prime[]={,,,,,,,},tot,ans;
struct node{int p,S;}a[];
bool operator<(node x,node y){return x.p<y.p;}
inline void solve(int x)
{
int now=;
for(int i=;i<;i++)
if(!(x%prime[i]))
{
now|=<<i;
while(!(x%prime[i]))x/=prime[i];
}
a[++tot]=(node){x,now};
}
int main()
{
scanf("%d%d",&n,&mod);
f[][]=;
for(int i=;i<=n;i++)solve(i);
sort(a+,a+tot+);
for(int l=,r;l<=tot;l=r+)
{
for(r=l;r<tot&&a[r+].p==a[r].p&&a[r].p!=;r++);
for(int i=;i<;i++)
for(int j=;j<;j++)
dp[i][j][]=dp[i][j][]=f[i][j];
for(int k=l;k<=r;k++)
{
for(int i=;~i;i--)
{
int now=-i;
for(int j=now;;j=(j-)&now)
{
if((a[k].S&j)==)
{
dp[i|a[k].S][j][]+=dp[i][j][];
if(dp[i|a[k].S][j][]>=mod)
dp[i|a[k].S][j][]-=mod;
}
if((a[k].S&i)==)
{
dp[i][j|a[k].S][]+=dp[i][j][];
if(dp[i][j|a[k].S][]>=mod)
dp[i][j|a[k].S][]-=mod;
}
if(!j)break;
}
}
}
for(int i=;i<;i++)
for(int j=;j<;j++)
{
f[i][j]=dp[i][j][]+dp[i][j][]-f[i][j];
if(f[i][j]>=mod)f[i][j]-=mod;
if(f[i][j]<)f[i][j]+=mod;
}
}
for(int i=;i<;i++)
{
int now=-i;
for(int j=now;;j=(j-)&now)
{
ans+=f[i][j];
if(ans>=mod)ans-=mod;
if(!j)break;
}
}
printf("%d\n",ans);
}
[BZOJ4197][Noi2015]寿司晚宴的更多相关文章
- [UOJ#129][BZOJ4197][Noi2015]寿司晚宴
[UOJ#129][BZOJ4197][Noi2015]寿司晚宴 试题描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司 ...
- BZOJ4197 [Noi2015]寿司晚宴 【状压dp】
题目链接 BZOJ4197 题解 两个人选的数都互质,意味着两个人选择了没有交集的质因子集合 容易想到将两个人所选的质因子集合作为状态\(dp\) \(n\)以内质数很多,但容易发现\(\sqrt{n ...
- bzoj4197 [Noi2015]寿司晚宴——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4197 首先,两个人选的数都互质可以看作是一个人选了一个数,就相当于选了一个质因数集合,另一个 ...
- 【BZOJ4197】[Noi2015]寿司晚宴 状压DP+分解质因数
[BZOJ4197][Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴 ...
- 【BZOJ-4197】寿司晚宴 状压DP
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 694 Solved: 440[Submit][Status] ...
- BZOJ 4197: [Noi2015]寿司晚宴( dp )
N^0.5以内的质数只有8个, dp(i, j, k)表示用了前i个大质数(>N^0.5), 2人选的质数(<=N^0.5)集合分别为j, k时的方案数. 转移时考虑当前的大质数p是给哪个 ...
- BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划
BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被 ...
- [NOI2015]寿司晚宴 --- 状压DP
[NOI2015]寿司晚宴 题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴. 小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿 ...
- BZOJ 4197: [Noi2015]寿司晚宴 状态压缩 + 01背包
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MB Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿 ...
随机推荐
- javascript 心得
1.&&和||等逻辑判断运算标记可以当成条件运算来使用例如: var a = b = c = "12"; (a=="13"&& ...
- 耿丹CS16-2班第七次作业汇总
Deadline: 2016-11-27 11:59pm 作业内容 第七次作业总结 01.每次成绩发布,麻烦没交作业的同学(暂定得分为-5的),请及时补交: 02.想不出来可以,代码乱成一团不行,命名 ...
- bzoj violet系列 (2708~2725)
cbh大爷说:写博客不能弃坑. orz cbh 那我就来更新博客了. violet这个系列的题好神啊……出题人好劲啊…… ……怎么最近都在理性愉悦啊…… 另外bzoj400题纪念~ 2708: [Vi ...
- python基础八
面向对象的好处 更容易扩展.提高代码使用效率,使你的代码组织性更强, 更清晰,更适合复杂项目的开发 封装 把功能的实现细节封装起来,只暴露调用接口 继承 多态 接口的继承 定义 类 ===> ...
- shell 脚本中的运算
#!/bin/bash read -p "please Insert two integer values: " a b if [ ! -n "$a" -o ! ...
- 得静下心来看python了。
陆陆续续看了些python爬虫的相关知识.今天找到了这篇博客不错就看这个,明天看到那个又很好又跑去看那个. 来来回回耽误不少时间.接下来不能再这样了,老老实实就看xlzd.me博客和Python实战: ...
- 一篇很好的Java、C、PHP、前端、Android、IOS的文章
http://www.cctime.com/html/2016-11-8/1238265.htm 很好的讲了这些技术的学习路线,其中的文档资料很丰富,值得学习参考
- 已知当前地理位置经纬度查询几个点中最近的一个地点demo
1.首先定义一个点与点之间测算距离的方法 2.然后定义找出基本点和集合中最近的一个点的方法 3.取第一条数据即是最近的点的坐标 public class Location { public int i ...
- HTML5窗口间同域和跨域的通信
一丶同域下的 1.如果我们要操作iframe里面的元素,首先获取到引入的页面的window.获取iframe里面的window对象. var oIframe=getElementsByTagName( ...
- iOS-上架APP之启动页设置(新手必看!)
今天自己做的小作品准备提交,就差一个启动页,各种百度,各种搜,结果还好最后终于出来了,和大家分享一下,这个过程中遇到的各种小问题.(注XCode版本为7.2) 1.启动页一般都是图片,因为苹果有4,4 ...