【NOI2015】【寿司晚宴】【状压DP】
Description
为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。
小 G 和小 W 作为參加 NOI 的选手,也被邀请參加了寿司晚宴。
Input
输入文件的第 1 行包括 2 个正整数 n,p。中间用单个空格隔开,表示共同拥有 n 种寿司。终于和谐的方案数要对 p 取模。
Output
输出一行包括 1 个整数,表示所求的方案模 p 的结果。
Sample Input
Sample Output
HINT
2≤n≤500
我们能够把这8个质因子压成二进制位。形成2^8个集合。
对于每一个数。仅仅可能含有不超过1个大于根号500的质因子,我们按这个将每一个数分类。
先把f数组复制两遍到p[1]和p[2];
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int f[301][301],p[3][301][301],pp,ans;
int prime[8]={2,3,5,7,11,13,17,19},n;
struct use{
int kind,se;
}s[600];
bool cmp(use a,use b)
{
if (a.kind!=b.kind) return a.kind<b.kind;
else return a.se<b.se;
}
int main()
{
freopen("dinner.in","r",stdin);
freopen("dinner.out","w",stdout);
scanf("%d%d",&n,&pp);
for (int i=1;i<=n;i++)
{
int temp;
temp=i;
for (int j=0;j<8;j++)
if (temp%prime[j]==0)
{
s[i].se|=1<<j;
while (temp%prime[j]==0) temp/=prime[j];
}
s[i].kind=temp;
}
sort(s+2,s+n+1,cmp);
f[0][0]=1;
for (int i=2;i<=n;i++)
{
if (i==2||s[i].kind==1||s[i].kind!=s[i-1].kind)
{
memcpy(p[1],f,sizeof f );
memcpy(p[2],f,sizeof f );
}
for (int j=255;j>=0;j--)
for (int k=255;k>=0;k--)
{
if ((k&s[i].se)==0) p[1][j|s[i].se][k]=(p[1][j|s[i].se][k]+p[1][j][k])%pp;
if ((j&s[i].se)==0) p[2][j][k|s[i].se]=(p[2][j][k|s[i].se]+p[2][j][k])%pp;
}
if (i==n||s[i].kind==1||s[i].kind!=s[i+1].kind)
{
for (int j=0;j<=255;j++)
for (int k=0;k<=255;k++)
f[j][k]=((p[1][j][k]+p[2][j][k]-f[j][k])%pp+pp)%pp;
}
}
ans=0;
for (int i=0;i<=255;i++)
for (int j=0;j<=255;j++)
if ((i&j)==0) ans=(ans+f[i][j])%pp;
cout<<ans<<endl;
}
【NOI2015】【寿司晚宴】【状压DP】的更多相关文章
- [NOI2015]寿司晚宴 --- 状压DP
[NOI2015]寿司晚宴 题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴. 小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿 ...
- 【BZOJ4197】[Noi2015]寿司晚宴 状压DP+分解质因数
[BZOJ4197][Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴 ...
- B4197 [Noi2015]寿司晚宴 状压dp
这个题一开始想到了唯一分解定理,然后状压.但是显然数组开不下,后来想到每个数(n<500)大于19的素因子只可能有一个,所以直接单独存就行了. 然后正常状压dp就很好搞了. 题干: Descri ...
- bzoj4197 [Noi2015]寿司晚宴——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4197 首先,两个人选的数都互质可以看作是一个人选了一个数,就相当于选了一个质因数集合,另一个 ...
- BZOJ 4197: [Noi2015]寿司晚宴 状压dp+质因数分解
挺神的一道题 ~ 由于两个人选的数字不能有互质的情况,所以说对于一个质因子来说,如果 1 选了,则 2 不能选任何整除该质因子的数. 然后,我们发现对于 1 ~ 500 的数字来说,只可能有一个大于 ...
- [NOI2015]寿司晚宴——状压dp
题目转化:将2~n的数分成两组,可以不选,使得这两组没有公共的质因子.求方案数. 选择了一个数,相当于选择了它的所有质因子. 30分: 发现,n<=30的时候,涉及到的质因子也就10个.2,3, ...
- 【BZOJ-4197】寿司晚宴 状压DP
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 694 Solved: 440[Submit][Status] ...
- BZOJ 4197 NOI 2015 寿司晚宴 状压DP
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 694 Solved: 440[Submit][Status] ...
- NOI 2015 寿司晚宴 (状压DP+分组背包)
题目大意:两个人从2~n中随意取几个数(不取也算作一种方案),被一个人取过的数不能被另一个人再取.两个人合法的取法是,其中一个人取的任何数必须与另一个人取的每一个数都互质,求所有合法的方案数 (数据范 ...
- [NOI2015][bzoj4197] 寿司晚宴 [状压dp+质因数]
题面 传送门 思路 首先,要让两个人选的数字全部互质,那么有一个显然的充要条件:甲选的数字的质因数集合和乙选的数字的质因数集合没有交集 30pt 这种情况下n<=30,也就是说可用的质数只有10 ...
随机推荐
- js-限制参与活动的范围(微信H5活动)
近期接到大连某个项目,一个H5的活动,其中有一个需求就是:这个活动的参与者仅限大连地区的用户 所以参考了微信API 得出的操作结果为: wx.ready(function() { wx.getLoca ...
- Missing Ranges -- LeetCode
Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its mi ...
- 六. 异常处理8.throws子句
如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己而不发生异常.做到这点你可以在方法声明中包含一个throws子句.一个 throws 子句列举了一个方法可能抛 ...
- C语言基础之注释与常见错误
总结起来,注释有三种: 1.单行注释 1: //哈哈 单行注释 2.多行注释 1: /* 2: asdfasdfasdfasdfasdf 3: */ 其中多行注释如果这样写 1: /* 2: * 函数 ...
- 【视频】Linux高级程序设计01.3命令行选项及参数
[课程笔记] [命令行参数] 选项:-l -a -i 参数:-l /home main 函数形式: int main(int argc, char *argv[]) main函数是有参数的,而且有返回 ...
- SQL Server 2005 系统数据介绍:dm_exec_connections
原文:SQL Server 2005 系统数据介绍:dm_exec_connections 转载:http://msdn.microsoft.com/zh-cn/library/ms181509(SQ ...
- Delphi ParamStr 使用方法
ParamStr(0) 代表程序的路径, ParamStr(1) 代表程序的设置的参数
- XCTest(一)
target: + 来添加target,可以选择工程中不同的target目标来添加 class: +来添加class, 可以按照不同的测试功能来分类,比如NormalFunctionTest, UI ...
- html 打印代码,支持翻页
ylbtech_html_print html打印代码,支持翻页 <html> <head> <meta name=vs_targetSchema content=&qu ...
- jquery调用click事件的三种方式
第一种方式: $(document).ready(function(){ $("#clickme").click(function(){ alert("Hello Wor ...