[NOI2005]寿司晚宴
题目描述
为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴。小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴。
在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1,其中第种寿司的美味度为i+1(即寿司的美味度为从2到n)。
现在小G和小W希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小G品尝的寿司种类中存在一种美味度为x的寿司,小W品尝的寿司中存在一种美味度为y的寿司,而x与y不互质。
现在小G和小W希望统计一共有多少种和谐的品尝寿司的方案(对给定的正整数p取模)。注意一个人可以不吃任何寿司。
输入输出格式
输入格式:
从文件dinner.in中读入数据。
输入文件的第1行包含2个正整数n,p中间用单个空格隔开,表示共有n种寿司,最终和谐的方案数要对p取模。
输出格式:
输出到文件dinner.out中。
输出一行包含1个整数,表示所求的方案模p的结果。
输入输出样例
3 10000
9
4 10000
21
100 100000000
3107203
题解:
小于√500的素数有8个,对于题意,可以理解为两人不能有同一素数倍数的寿司
比如选了6,相当于选了2,3,则;另一人不能选2,3的倍数
用8为二进制数来保存情况,状压dp
f[j][k]表示小G为j小W为k的方案数,p[1][j][k]表示小G选,p[2][j][k]表示小w选
注意一个数可能有大于√500的因数,但显然只能有一个,记录下为ki,如果ki相同也不能选
转移后f[j][k]=p[1][j][k]+p[2][j][k]-f[j][k]
减去f[j][k]是因为p[1],p[2]都算了f[j][k],所以减去
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Node
{
int se,ki;
} s[];
int prime[]= {,,,,,,,};
int n;
int p[][][],f[][],Mod,ans;
bool cmp(Node a,Node b)
{
if (a.ki!=b.ki) return a.ki<b.ki;
else return a.se<b.se;
}
int main()
{int i,j,k;
//freopen("1.out","w",stdout);
cin>>n>>Mod;
for (int i=; i<=n; i++)
{
int tmp;
tmp=i;
//cout<<i<<endl;
for (int j=; j<; j++)
{
if (tmp%prime[j]==)
{
s[i].se|=<<j;
while (tmp%prime[j]==) tmp/=prime[j];
}
}
s[i].ki=tmp;
}
sort(s+,s+n+,cmp);
f[][]=;
for (int i=; i<=n; i++)
{
if (i==||s[i].ki==||s[i].ki!=s[i-].ki)
{
for (int j=; j<=; j++)
{
for (int k=; k<=; k++)
{
p[][j][k]=f[j][k];
p[][j][k]=f[j][k];
}
}
}
for (int j=; j>=; j--)
{
for (int k=; k>=; k--)
{
if ((k&s[i].se)==) p[][j|s[i].se][k]=(p[][j|s[i].se][k]+p[][j][k])%Mod;
if ((j&s[i].se)==) p[][j][k|s[i].se]=(p[][j][k|s[i].se]+p[][j][k])%Mod;
}
}
if (i==n||s[i].ki==||s[i].ki!=s[i+].ki)
{
for (int j=; j<=; j++)
{
for (int k=; k<=; k++)
{
f[j][k]=((p[][j][k]+p[][j][k]-f[j][k])%Mod+Mod)%Mod;
}
}
}
}
for (int i=; i<=; i++)
{
for (int j=; j<=; j++)
{
if ((i&j)==)
{
//printf("%d %d %d\n",f[i][j],i,j);
ans=(ans+f[i][j])%Mod;
}
}
}
cout<<ans;
}
[NOI2005]寿司晚宴的更多相关文章
- BZOJ4197[NOI2005]寿司晚宴
Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同 ...
- 【BZOJ-4197】寿司晚宴 状压DP
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 694 Solved: 440[Submit][Status] ...
- [BZOJ4197][Noi2015]寿司晚宴
4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 412 Solved: 279[Submit][Status] ...
- HYSBZ 4197 寿司晚宴
Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了 n−1 种不同 ...
- BZOJ 4197: [Noi2015]寿司晚宴( dp )
N^0.5以内的质数只有8个, dp(i, j, k)表示用了前i个大质数(>N^0.5), 2人选的质数(<=N^0.5)集合分别为j, k时的方案数. 转移时考虑当前的大质数p是给哪个 ...
- 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 ...
- BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划
BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被 ...
随机推荐
- JavaScript判断类型
1.typeof操作符,返回值为字符串,用来判断一个值是哪种基本类型 "undefined"-Undefined "boolean"-Boolean " ...
- 设计模式NO.2
设计模式NO.2 本次博客内容为第二次设计模式的练习.根据老师的要求完成下列题目: 题目1 如果需要开发一个跨平台视频播放器,可以在不同操作系统平台(如Windows.Linux.UNIX等)上播放多 ...
- 学号:201621123032 《Java程序设计》第13周学习总结
1:本周学习总结 2:为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 2.1:简述你想为你的系统增加什么网络功能?设计思路是什么? 创建了一个服务器监听8080端口,通过网络助手客户 ...
- Android Notification setLatestEventInfo方法已废弃
代替setLatestEventInfo的方法是用Notification.Builder创建Builder对象,通过该对象设置Notification相关属性. otification.Builde ...
- Docker学习笔记 - 在运行中的容器内启动新进程
docker psdoker top dc1 # 容器情况# 在运行中的容器内启动新进程docker exec [-d] [-i] [-t] 容器名 [command] [args]docker ex ...
- python入门(8)数据类型和变量
python入门(8)数据类型和变量 数据类型 在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样 ...
- Excel 日期截取(函数)
需求:时间段截取,去掉年月日,保留时分. 实现函数: =TEXT(A2,"HH:MM")&"-"&TEXT(B2,"HH:MM& ...
- Apache命令
参考于:http://www.jinbuguo.com/apache/menu22/programs/apxs.html 安装httpd-devel才有apxs
- log4j将日志文件输出到相对路径
建议直接使用jvm中定义的变量或者操作系统的环境变量. log4j.appender.logfile.File=${user.dir}/logs/app.log,使用tomcat容器时${user.d ...
- IT技术有感
今天看技术文章,spring相关的,某一个点以前每次看一直不理解, 可是不知道为什么隔了1年左右,中间什么都没做,现在却都懂了. 在看懂的那一刻,笼罩在我心上的躁动突然平静了许多,我的心这一年来前所未 ...