【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 ...
随机推荐
- 有关时间限制使用和软件注册的设计(delphi)
http://blog.sina.com.cn/s/blog_693cf1cf0100oyus.html procedure TForm1.form1create(Sender: TObject);v ...
- [UML] Use Case 是什么
虽然每个人使用系统的场景有所差异,但是若用户的目标是相同的,则其场景会极为类似.那么这些类似的场景的集合就是类,这种类就称为Use Case.其实例就是场景
- POJ 3620 Avoid The Lakes【DFS找联通块】
Avoid The Lakes Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6826 Accepted: 3637 D ...
- Python的并发并行[1] -> 线程[3] -> 多线程的同步控制
多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...
- #422 Div2 D
#422 Div2 D 题意 假设有 n 个人比赛,每次比赛进行分组,每组人数必须相同,如果一组有 x 人,则那一组要比赛 $ \frac{x * (x - 1)}{2}$次,最终一人获胜,其它人淘汰 ...
- 理解css的BFC
BFC是CSS中一个看不见的盒子,(先理解CSS的盒子模型).它的页面渲染方式与普通流的盒子模型不同,它决定了其子元素将如何定位(所用属于BFC的box 都默认左对齐),以及和其他元素的关系和相互作用 ...
- Vue 基础的开发环境
本期节目将手把手教你去 NPM 市场买最新鲜的食材,只为搭配 小鲜肉 Vue 下厨. 既然它是当红小鲜肉,我想有必要写一篇文章来帮助大家配置好 Vue 的生产环境,我给它的总体评价是“简单却不失优雅, ...
- 从let和const谈起
注册博客园账号也有好些年了,有事没事经常来逛逛,感觉博客园的同学们一直都很活跃,相比国内其他社区来讲,这里的技术氛围很浓,非常适合学习和交流,所以博主我也决定在这里驻扎了,在这里,博主希望能坚持写一些 ...
- 【转】matlab函数_连通区域
转载自einyboy的博文Matlab的regionprops详解 1. matlab函数bwareaopen──删除小面积对象格式:BW2 = bwareaopen(BW,P,conn)作用:删除二 ...
- espresso Seekbar
package test.utils; import android.support.test.espresso.PerformException; import android.support.te ...