[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 的成功开幕,主办方为大家准备了一场寿 ...
随机推荐
- Maven的POM.xml配置大全
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://mave ...
- Sublime text 3如何编辑less并转(编译)成css文件
今天开始学习使用less这个强大方便的前端工具,本来是考虑用koala(专门编辑less的软件)来使用less的,但是发现sublime编辑器也可以实现对less的编译及高亮显示代码,这样既能少用一个 ...
- Selenium使用
定位 1.普通 by id, name,class_name,link_text 2.加强 xpath css
- php阳历转农历的类 谷歌到的
<?phpclass Lunar { var $MIN_YEAR = 1891; var $MAX_YEAR = 2100; var $lunarInfo = array( ...
- 自动加载dll,加载dll中程序集的信息。
自动加载程序集,解析程序集中的方法. private static object Invoke(string lpFileName, string Namespace, string ClassNam ...
- navicat 破解
首先上官网上下载LINUX版本: http://www.navicat.com/download 下载 navicat110_mysql_en.tar.gz 文件 下载后解压tar文件 tar -zx ...
- ESXI6.0启用 snmp
1.首先通过ILO登录远程控制桌面然后按F2输入密码后进入 2.开启shell 3.按住 Alt + F1 切换到shell 4.启用 snmp esxcli system snmp set -- ...
- asp.net 网页中播放 flash 和flv
需求:在网页中播放powerpoint保存的pps文件和mp4文件 经过查阅:发现网页上直接播放pps文件比较麻烦(office web apps server),所以通过工具,将pps文件转换为sw ...
- OC推箱子
#include<stdio.h> #include<stdlib.h> int main(void) { char sr;//存储用户输入的指令 //绘制地图 char a[ ...
- SQL注入以及如何防止和索引
SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行. 防止SQL注入: 1.开启配置文件中的magi ...