BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划
Description
为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。
Input
输入文件的第 1 行包含 2 个正整数 n,p,中间用单个空格隔开,表示共有 n 种寿司,最终和谐的方案数要对 p 取模。
Output
输出一行包含 1 个整数,表示所求的方案模 p 的结果。
Sample Input
Sample Output
HINT
2≤n≤500
$g[i][j]$表示第一个人不选这个大质数的方案数,$h[i][j]$表示第二个数不选这个大质数的方案数
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;
int mod,f[266][266],g[266][266],h[266][266];
int mask=255,n;
int pr[22];
struct A {
int val,lp;
}a[550];
bool cmp(const A &x,const A &y){return x.lp<y.lp;}
int main() {
scanf("%d%d",&n,&mod);
int i,j,k,l;
pr[2]=0; pr[3]=1; pr[5]=2; pr[7]=3; pr[11]=4; pr[13]=5; pr[17]=6; pr[19]=7;
for(i=2;i<=n;i++) {
int tmp=i;
for(j=2;j*j<=tmp;j++) {
if(tmp%j==0) {
a[i-1].val|=(1<<pr[j]);
while(tmp%j==0) tmp/=j;
}
}
if(tmp!=1) {
if(tmp>19) a[i-1].lp=tmp;
else a[i-1].val|=(1<<pr[tmp]);
}
}
int lst=1;
sort(a+1,a+n,cmp);
f[0][0]=1;
for(i=1;i<n;i=lst+1) {
if(a[i].lp) {
while(lst<n-1&&a[lst+1].lp==a[i].lp) lst++;
for(j=0;j<=mask;j++) {
for(k=0;k<=mask;k++) {
g[j][k]=h[j][k]=f[j][k];
}
}
for(j=i;j<=lst;j++) {
for(k=mask;k>=0;k--) {
for(l=mask;l>=0;l--) {
if(!(k&l)&&!(a[j].val&l)) {
g[k|a[j].val][l]=(g[k|a[j].val][l]+g[k][l])%mod;
h[l][k|a[j].val]=(h[l][k|a[j].val]+h[l][k])%mod;
}
}
}
}
for(j=0;j<=mask;j++) {
for(k=0;k<=mask;k++) {
f[j][k]=((g[j][k]+h[j][k]-f[j][k])%mod+mod)%mod;
}
}
}else {
lst=i;
for(j=0;j<=mask;j++) {
for(k=0;k<=mask;k++) {
g[j][k]=f[j][k];
}
}
for(j=0;j<=mask;j++) {
for(k=0;k<=mask;k++) {
if(!(a[i].val&k)&&!(j&k)) {
(f[j|a[i].val][k]+=g[j][k])%=mod;
(f[k][j|a[i].val]+=g[k][j])%=mod;
}
}
}
}
}
int ans=0;
for(i=0;i<=mask;i++) {
for(j=0;j<=mask;j++) {
if(!(i&j)&&f[i][j]) ans=(ans+f[i][j])%mod;
}
}
printf("%d\n",ans);
}
BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划的更多相关文章
-
BZOJ 4197: [Noi2015]寿司晚宴 状态压缩 + 01背包
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MB Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿 ...
-
[NOI2015]寿司晚宴 --- 状压DP
[NOI2015]寿司晚宴 题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴. 小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿 ...
-
【BZOJ4197】[Noi2015]寿司晚宴 状压DP+分解质因数
[BZOJ4197][Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴 ...
-
[BZOJ4197][Noi2015]寿司晚宴
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 412 Solved: 279[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是给哪个 ...
-
状态压缩动态规划 状压DP
总述 状态压缩动态规划,就是我们俗称的状压DP,是利用计算机二进制的性质来描述状态的一种DP方式 很多棋盘问题都运用到了状压,同时,状压也很经常和BFS及DP连用,例题里会给出介绍 有了状态,DP就比 ...
-
[UOJ#129][BZOJ4197][Noi2015]寿司晚宴
[UOJ#129][BZOJ4197][Noi2015]寿司晚宴 试题描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司 ...
-
【bzoj4197】[Noi2015]寿司晚宴 分解质因数+状态压缩dp
题目描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 ...
-
NOI2015 寿司晚宴
今年NOI确实是在下输了.最近想把当时不会做的题都写一下. 题意 从2到n(500)这些数字中,选若干分给A,若干分给B,满足不存在:A的某个数和B的某个数的GCD不等于1. 对于寿司晚宴这题,标准解 ...
随机推荐
-
打造 html5 文件上传组件,实现进度显示及拖拽上传,支持秒传+分片上传+断点续传,兼容IE6+及其它标准浏览器
老早就注册了博客园帐号,昨天才发现,连博客都没开,Github也是一样,深觉惭愧,赶紧潜个水压压惊`(*∩_∩*)′ 言归正传.大概许多人都会用到文件上传的功能,上传的库貌似也不少,比如(jQuery ...
-
ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”解决办法
ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”解决办法 今天遇到的一个问题: 直接修改数据表中的某些字段数据内容时报错: ORA-01461: 仅可以为插入 LONG 列的 L ...
-
installation - How to install Synaptic Package Manager? - Ask Ubuntu
installation - How to install Synaptic Package Manager? - Ask Ubuntu How to install Synaptic Package ...
-
[补档]Cube
Cube 题目 给你一个n×m的棋盘,有一个1×1×2的长方体竖直放在(1,1)上,你可以将其在棋盘上滚动,你的目标是让其竖直放在(n,m)上,问至少需要多少次操作.(放倒.竖直.翻滚) INPUT ...
-
MVC页面静态化
MVC 页面静态化 最近工作需要,实现页面静态化,以前在ASP时代,都是FSO自己手动生成的. 新时代,MVC了,当然也要新技术,网上一搜,找到一种解决方案,是基于MVC3的,实现原理是通过mvc ...
-
Android状态栏透明(沉浸式效果)
Android状态栏透明(沉浸式效果) 默认效果 沉浸式效果 方式一 源码 下载地址(Android Studio工程):http://download.csdn.net/detail/q487880 ...
-
Container的简单认识
容器是一个标准的软件单元,它将代码及其所有依赖关系打包,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境. Docker容器映像是一个轻量级,独立的可执行软件包,包含运行应用程序所需的一切:代 ...
-
实习培训——Servlet(5)
实习培训——Servlet(5) 1 Servlet 简介 Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HT ...
-
HDU-5001 Walk (概率DP)
Problem Description I used to think I could be anything, but now I know that I couldn't do anything. ...
-
Android四大组件之contentProvider
Activity,Service,broadcast and Contentprovider android 4 大组件. ContentProvider:使用: public class Image ...