【NOI2015】寿司晚宴
题目链接:http://uoj.ac/problem/129
描述
为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。
在晚宴上,主办方为大家提供了 n−1n−1 种不同的寿司,编号 1,2,3,…,n−11,2,3,…,n−1 ,其中第 ii 种寿司的美味度为 i+1i+1 (即寿司的美味度为从 22 到 nn )。
现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小 G 品尝的寿司种类中存在一种美味度为 xx 的寿司,小 W 品尝的寿司中存在一种美味度为 yy 的寿司,而 xx 与 yy 不互质。
现在小 G 和小 W 希望统计一共有多少种和谐的品尝寿司的方案(对给定的正整数 pp 取模)。注意一个人可以不吃任何寿司。
输入格式
输入文件的第 11 行包含 22 个正整数 n,pn,p ,中间用单个空格隔开,表示共有 nn 种寿司,最终和谐的方案数要对 pp 取模。
输出格式
输出一行包含 11 个整数,表示所求的方案模 pp 的结果。
样例一
input
3 10000
output
9
样例二
input
4 10000
output
21
样例三
input
100 100000000
output
3107203
限制与约定
| 测试点编号 | n 的规模 | 约定 |
|---|---|---|
| 1 | 2≤n≤30 | 0<p≤1000000000 |
| 2 | ||
| 3 | ||
| 4 | 2≤n≤100 | |
| 5 | ||
| 6 | 2≤n≤200 | |
| 7 | ||
| 8 | 2≤n≤500 | |
| 9 | ||
| 10 |
时间限制:1s
空间限制:512MB
题解
状压DP
很容易就想到只要两个集合中没有相同的质因数就满足条件了
注意,每个数中>sqrt(500)的数最多只有一个!!
于是,我们可以枚举出<sqrt(500)的质数,共八个
列DP:f[i][j][k]表示选到第i个数,A的状态为j,B的状态为k的方案数
然后呢?
我们对i分解质因数,并记录最大的质数以及它的状态
如:138=2*3*23,所以它的最大的质数为23,状态为3(二进制为11000000)
于是,f[i][j][k]+=f[i-1][j][k],f[i][j|s[i]][k]+=f[i-1][j][k],f[i][j][k|s[i]]+=f[i-1][j][k],
大质数的情况特判一下就好了
代码
#include <cstdio>
#include <algorithm>
using namespace std;
int i,j,k,n,m,x,y,t,mod,prime[],f[][<<][<<][];
struct data{int bi,su;}p[];
inline bool cmp(const data&a,const data&b){return a.bi<b.bi;}
int add(int &x,int y){x+=y;if (x>=mod)x-=mod;}
int main(){
scanf("%d%d",&n,&mod);
prime[]=;prime[]=;prime[]=;prime[]=;prime[]=;prime[]=;prime[]=;prime[]=;
for (i=;i<=n;i++){
int te=i;
for (j=;j<=;j++)
if (te%prime[j]==){
p[i].su|=<<j-;
while (te%prime[j]==)te/=prime[j];
}
p[i].bi=te;
}
sort(p+,p++n,cmp);f[][][][]=;
for (i=;i<=n;i++)
for (j=;j<(<<);j++)
for (k=;k<(<<);k++){
if ((j&k)==){
if (i==||p[i].bi==||p[i].bi!=p[i-].bi){
int te=;
add(te,f[i-][j][k][]);add(te,f[i-][j][k][]);add(te,f[i-][j][k][]);
add(f[i][j][k][],te);add(f[i][j|p[i].su][k][],te);add(f[i][j][k|p[i].su][],te);
}
else{
if (f[i-][j][k][]){add(f[i][j][k][],f[i-][j][k][]);add(f[i][j|p[i].su][k][],f[i-][j][k][]);add(f[i][j][k|p[i].su][],f[i-][j][k][]);}
if (f[i-][j][k][]){add(f[i][j][k][],f[i-][j][k][]);add(f[i][j|p[i].su][k][],f[i-][j][k][]);}
if (f[i-][j][k][]){add(f[i][j][k][],f[i-][j][k][]);add(f[i][j][k|p[i].su][],f[i-][j][k][]);}
}
}
}
int ans=;for (i=;i<(<<);i++)for (j=;j<(<<);j++)if ((i&j)==)for (k=;k<=;k++)add(ans,f[n][i][j][k]);
printf("%d\n",ans);
return ;
}
【NOI2015】寿司晚宴的更多相关文章
- [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是给哪个 ...
- BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划
BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被 ...
- [NOI2015]寿司晚宴 --- 状压DP
[NOI2015]寿司晚宴 题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴. 小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿 ...
- 【BZOJ4197】[Noi2015]寿司晚宴 状压DP+分解质因数
[BZOJ4197][Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴 ...
- [UOJ#129][BZOJ4197][Noi2015]寿司晚宴
[UOJ#129][BZOJ4197][Noi2015]寿司晚宴 试题描述 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司 ...
- BZOJ 4197: [Noi2015]寿司晚宴 状态压缩 + 01背包
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MB Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿 ...
- NOI2015 寿司晚宴
今年NOI确实是在下输了.最近想把当时不会做的题都写一下. 题意 从2到n(500)这些数字中,选若干分给A,若干分给B,满足不存在:A的某个数和B的某个数的GCD不等于1. 对于寿司晚宴这题,标准解 ...
- bzoj 4199 [NOI2015]寿司晚宴
Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同 ...
- [BZOJ]4197: [Noi2015]寿司晚宴
Time Limit: 10 Sec Memory Limit: 512 MB Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NO ...
随机推荐
- 《spark机器学习 第二版》 蔡立宇 分享 pdf下载
链接:https://pan.baidu.com/s/15Y14eAnfj8zf5mXdixbVeQ 提取码:rkdt
- 比较undefined和“undefined”
说实话,它们之间的区别挺明显的,我们一般认为undefined是JavaScript提供的一个“关键字”,而“undefined”却是一个字符串,只是引号的内容和undefined一样. undefi ...
- Windows ,获取硬盘物理序列号(VC++)
#include <windows.h> BOOL GetHDID(PCHAR pIDBufer) { HANDLE hDevice=NULL; hDevice=::Crea ...
- SSZipArchive解压失败的原因
SSZipArchive 解压失败的原因是路径不对解压失败后,修正路径后再次解压就会出现解压失败的情况,代理方法也不会走也没有日志输出.解决方法就是删除手机上的软件再次运行就可以了.这个问题也就在内部 ...
- 学习Mybatis的两个必须的jar包分享
百度云盘:http://pan.baidu.com/s/1nuNxRcd 提取码:t765(好像不需要提取码,不太会用云盘...) 自己学习mybatis的时候去找这两个jar包也是不容易,特别分享一 ...
- oo第八次作业--5,6,7次作业总结
一.多线程的设计 这三次作业的主要内容就是使用多线程并且解决多线程中出现的问题.而对于多线程我也有了自己的理解.首先明确的一点是单个CPU在同一时间只能处理一件事.那么,不管是多进程还是多线程,我们的 ...
- 代码上传不到github远程仓库的经历和总结
第二次的作业是分布式版本控制系统Git的安装与使用.一切都好端端地进行,知道最后的上传到给远程仓库时一直都上传失败.舍友也过来调试和助教的指导,依然不成功.我也上网进行了大量的翻查资料也未能成功.这是 ...
- ABP ModuleZero后台框架materialize禁止模拟select和checkbox
使用abp modulezero自带那个后台框架发现一个操蛋的问题,所有的select和checkbox都被改成div模拟的,虽然比原生美观,但有时候真的很难用. 比如说要用select做一个联动菜单 ...
- AG-Admin微服务框架入门
AG-Admin微服务框架入门 @qq群:一群: 837736451 二群 169824183 一 概要介绍 AG-Admin后台地址:https://gitee.com/minull/ace-s ...
- jQuery扩展插件
jQuery有多好用,大家有目共睹的,但是有时候不是每个功能都是万能的,有时候我们需要实现自己的功能,jQuery提供了很好的拓展功能,我们可以去拓展插件,更好的利用jQuery 查看官网,可知,有两 ...