NOI 2015 寿司晚宴 状压DP

Miniforge3部署教程,完美替代Anaconda3 大背景不介绍了,哎!直接上教程! 阅读详情

为了庆祝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取模)。注意一个人可以不吃任何寿司。

题外话:
  上午听某大神讲DP,讲了不少NOI的好(恶心)题(然而基本没有听懂)。结果晚上水NOI2015时就碰到了。
  一开始偷瞄了题目标签,看到状压后很容易想到压质因子,不过看了看顶多拿一半分。感觉应该是O(n∗2n√)的做法,但细节想不清楚。。

思路:
  果然只要压n−−√以内的质因子,对所有数按其大于n−−√的因数分组,若没有大于n−−√的因数则单独分组。对于小于n−−√的因子实际上有3种状态,即某一个人选或者都不选,但这样不是很方便,简单起见我们用f[i][j]表示第一个人取的状态为 i ,第二个人取的状态为 j 的方案数。然后一开始就去掉无效状态加以优化(其实不优化也行)。
  然后对于每一组数,显然某个人只要选了其中的一个,另外一个人就一个也不能选,于是我们每次将f复制到 dp[][],转移也就不难推了。处理完一组后再令f[u][v]=dp[u][v]+dp[v][u]−f[i][j],表示某一个人选或不选这一组数,由于这两种情况都包含了两人都不选的情况,所以还需要减掉重复
  由于小于n−−√的质数最多只有8个,所以复杂度为O(n∗38)。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>

#define For(i,j,k) for(int i = j;i <= k;i++)
#define Forr(i,j,k) for(int i = j;i >= k;i--)

const int N = 256;
const int Prime[] = {1, 2, 3, 5, 7, 11, 13, 17, 19};

using namespace std;

struct Num{
    int fac, s;

    bool operator < (const Num& A) const{
        return fac < A.fac;
    }

}A[N<<1];

typedef long long LL;

LL f[N][N], dp[N][N], Mod;
int n, Begin[N], Next[N * N], to[N * N], e;

int main(){
    scanf("%d%lld", &n, &Mod);
    For(i,1,n-1){
        int t = i + 1;
        For(j,1,8) while(t % Prime[j] == 0) 
            t /= Prime[j], A[i].s |= 1 << (j - 1);
        A[i].fac = t;
    }
    For(u,0,255) 
        For(v,0,255) 
            if(!(u & v)){
                Next[++e] = Begin[u];
                Begin[u] = e;
                to[e] = v;
            }
    sort(A + 1, A + n);
    f[0][0] = dp[0][0] = 1;
    int l = 1;
    while(l < n){
        int r = l;
        while(A[r+1].fac == A[l].fac && A[l].fac != 1) ++r;
        For(i,l,r)
            Forr(u,255,0) for(int j = Begin[u];j;j = Next[j]){
                int v = to[j];
                if(!(A[i].s & u)) dp[u][v|A[i].s] = 
                    (dp[u][v|A[i].s] + dp[u][v]) % Mod;
            }
        For(u,0,255) 
            for(int j = Begin[u];j;j = Next[j]){
                int v = to[j];
                f[u][v] = 
                    (dp[u][v] + dp[v][u] - f[u][v] + Mod) % Mod;
            }
        For(u,0,255)
            for(int j = Begin[u];j;j = Next[j]) 
                dp[u][to[j]] = f[u][to[j]];
        l = r + 1;
    }
    LL Ans = 0;
    For(u,0,255) For(v,0,255) Ans = (Ans + f[u][v]) % Mod;
    printf("%lld\n", Ans);
    return 0;
}
手把手教你学Simulink——基于电机驱动系统的场景实例:轮毂电机在电动汽车中的分布式驱动控制仿真 本文详细介绍了基于MATLAB/Simulink和Simscape Electrical的电动汽车轮毂电机分布式驱动控制系统建模方法。内容包括系统结构设计(轮毂电机、逆变器、控制器等模块)、完整的建模过程(从基础模块导入到车辆动力学建模)、控制器设计与转矩分配策略实现,以及仿真参数设置与结果分析。通过仿真验证了该分布式驱动系统在速度跟踪、转弯性能等方面的优异表现,为电动汽车驱动系统的研究与开发提供了有效的仿真验证平台。文中还提供了相关代码示例和资料推荐,是学习Simulink电机控制系统建模的实用指南。 阅读详情

相关推荐

机载电脑与飞控串口通信(实测读取飞控IMU数据)《一、香橙派5max启动串口UART通信与飞控板通信,一次必通!》《二、allspark1与PIX6C通信踩坑及出坑》《三、orinnx载板与飞控通信》

机载电脑与飞控串口通信(实测读取飞控IMU数据)《一、香橙派5max启动串口UART通信与雷迅v5nano飞控板通信,一次必通!》《二、阿木机载电脑allspark1与PIX6C通信踩坑及出坑》,还有如何打开飞控串口以及如何提高飞控IMU频率。

2402_82745259的博客 3467

UOJ #129 [NOI2015 D1T3] 寿司晚宴

状压DP+思路

依然一笑作春温。 560

C#通过Aforge调用电脑摄像头(附代码)

C#标准库本身不带有能调用电脑摄像头的库,如果利用windows自身的API来实现的话,着实有些麻烦。Aforge这个第三方库能很好的实现调用、处理的功能。 PS:文末给大家分享了完整的项目源码,各位最好先下载下来,对照着来看 1、先看一下效果 2、Aforge介绍 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。 3、我使用的开发环境 操作系统

weixin_44996090的博客 1万+

bzoj4197[Noi2015]寿司晚宴 [状压DP]

4197: [Noi2015]寿司晚宴Time Limit: 10 Sec Memory Limit: 512 MB Submit: 652 Solved: 413 [Submit][Status][Discuss] Description为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。在晚宴上,主办方为大家

NULL 877

华中科技大学 计算机组成原理 educoder Logisim平台 计算机数据表示实验

本文主要是对 计算机数据表示实验的笔记和相关Logisim平台的图,供大家学习交流使用。 需要源文件或者源代码,可以留言评论! 目录实验目的第1关:汉字国标码转区位码实验第2关:汉字机内码获取实验第3关:偶校验编码设计第4关:偶校验解码电路设计第5关:16位海明编码电路设计第6关:16位海明解码电路设计第7关:海明编码流水传输实验第8关:16位CRC并行编解码电路设计第9关:CRC编码流水传输实验实验结果: 实验目的 本实训将帮助同学们巩固对计算机中数据表示方法的理解,要求能设计汉字国标码与区位码之间的转换

weixin_48383580的博客 2万+

AvFrame和AvPacket

在FFmpeg中,未压缩的图像和压缩的视频码流分别使用AVFrame结构和AVPacket结构保存;针对视频编码器,其流程为从数据源获取图像格式的输入数据,保存为AVFrame对象并传入编码器,从编码器输出AVPacket结构。

Lce的专栏 3236

【NOI2015】【寿司晚宴】【状压DP】

Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 i 种寿司的美味度为 i+1 (即寿司的美味度为从 2 到 n)。 现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不

sunshinezff的专栏 4425

STM32F429移植LVGL9.3.0:从源码配置到双缓冲优化实战

本文详细介绍了如何在STM32F429平台上移植LVGL 9.3.0图形库,涵盖从源码准备、工程配置、显示驱动适配到双缓冲优化等关键步骤。重点解析了利用STM32F429的硬件特性实现高效内存管理和流畅显示性能的实战技巧,为嵌入式GUI开发提供完整解决方案。

q6r7s8t9的博客 1120

【bzoj4197】[Noi2015]寿司晚宴 状压DP

Description为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 i 种寿司的美味度为 i+1 (即寿司的美味度为从 2 到 n)。 现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当

DQS的树洞 1709

On the convergence of FedAvg on non-iid data

On the convergence of FedAvg on non-iid data

Lyn_S的博客 7078

Wireshark抓包实战:5个CTF比赛中高频出现的流量分析技巧(附真实案例)

本文分享了Wireshark在CTF比赛和实战渗透中的五个核心流量分析技巧。内容涵盖从宏观统计概览锁定可疑目标、深度解析ICMP与HTTP等协议、追踪重组完整会话流,到利用字符串搜索和命令行工具进行自动化分析。掌握这些高阶技巧能显著提升分析海量网络流量的效率与精准度。

rrr55的博客 260

NOI2015day1寿司晚宴 状压DP

NOI2015day1寿司晚宴 测试点1~3 这个写法不唯一。可以2^30枚举之后打表。也可以dp。 定义状态dp[i][chs1][chs2]dp[i][chs1][chs2]dp[i][chs1][chs2]表示已经决策了2~i这些数,第一个人选的数的质因数中有chs1(二进制数表示状态),第二个人选的数的质因数有chs2的方案数。 这里i可以用滚动数组,也可以用01背包的套路(倒序枚举)优化...

Loging的博客 245

Vue + ECharts:从零构建智慧农业数据监控大屏(附完整源码)」 「超实用!一步步实现智慧农业大屏,完整代码+讲解」 「前端新手友好:Vue + ECharts 打造炫酷农业数据大屏」 「

Vue + ECharts:从零构建智慧农业数据监控大屏(附完整源码)」 「超实用!一步步实现智慧农业大屏,完整代码+讲解」 「前端新手友好:Vue + ECharts 打造炫酷农业数据大屏」 「前端可视化项目实战:智慧农业监控大屏开发详解」 「农作物可视化监控:用 Vue 和 ECharts 构建大屏应用」 「从零开始开发一个智慧农业数据大屏(代码+图表展示)」 「前端新手也能实现!智慧农业监控大屏开发教程」 「用 Vue 和 ECharts 搭建动态数据大屏:详细图文教程」 「学习前端大屏开发:

sky10100100的博客 1533

BZOJ 4197 NOI 2015 寿司晚宴 状压DP

4197: [Noi2015]寿司晚宴 Time Limit:10 SecMemory Limit:512 MBSubmit:694Solved:440[Submit][Status][Discuss] Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。 ...

WZZ66631的博客 195

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

状压dp--NOI2015 寿司晚宴

题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴。小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴。 在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1,其中第种寿司的美味度为i+1(即寿司的美味度为从2到n)。 现在小G和小W希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小G品尝的寿司种类中存在一种美味度为x的寿司,小...

继续学吧 250

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

bzoj4197 [NOI2015] [状压dp] 寿司晚宴

Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 i 种寿司的美味度为 i+1 (即寿司的美味度为从 2 到 n)。 现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种

某炒鸡无底蒟蒻的博客 402

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

bzoj4197 [Noi2015]寿司晚宴——状压DP

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4197 首先,两个人选的数都互质可以看作是一个人选了一个数,就相当于选了一个质因数集合,另一个人不能再选; 想把质因数状压起来,但是数量太多; 有个性质是一个数 x 最多有一个大于根号 x 的质因数,把那个拿出来单独考虑的话,剩下的质因数(小于根号500的)只有8个,可以状压;...

aodan5477的博客 185

NOI 2015 寿司晚宴 状压DP

题目链接: 点我点我:-) 题目:为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 ii 种寿司的美味度为 i+1(即寿司的美味度为从 2 到 n)。现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐

Free Cat~~~ 跳动的喵 390

NOI2015 寿司晚宴 状压DP

题目描述为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴。小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴。在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1,其中第种寿司的美味度为i+1(即寿司的美味度为从2到n)。现在小G和小W希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小G品尝的寿司种类中存在一种美味度为x的寿司,小W品尝的寿司中

Plume 羽 <。) 673

[NOI2015] 寿司晚宴(状压DP)

洛谷题目传送门 解题思路 首先考虑30pts的做法 因为两人选的数必须互质,因此可以想到只要维护二者没有共同质因子就行了 因为质因子个数很少,考虑状压DP 设 dp[S][T] 表示 A选了数的质因子状态为 S,B的质因子状态为 T 那么 dp[S|k][T]+=dp[S][T] ((k&T)==0) dp[S][T|k]+=dp[S][T] ((k&S)==0) 其中 k 表示 第 i 个数 的质因子状态,因为可以用滚动数组优化,因此不需...

jwg2732的专栏 272

【NOI2015】【bzoj4197】【状压DP】【滚动数组】寿司晚宴

Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 i 种寿司的美味度为 i+1 (即寿司的美味度为从 2 到 n)。 现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品

anantheparty的博客 457

P2150 [NOI2015]寿司晚宴【状压dp】

洛谷P2150 SOL 两两互质:对于同一个质因数的倍数不能选在同一集合内。 状压A,BA,BA,B所选的集合的质因数情况。即为f[S1][S2]f[S_1][S_2]f[S1​][S2​]。预处理出每一个数包含的质因数,也是状压。枚举当前数选在 A或B或不选。 {f[i][S1∣k][S2]+=f[i−1][S1][S2]f[i][S1∣k][S2]+=f[i−1][S1][S2]...

Jun 241

B4197 [Noi2015]寿司晚宴 状压dp

这个题一开始想到了唯一分解定理,然后状压。但是显然数组开不下,后来想到每个数(n<500)大于19的素因子只可能有一个,所以直接单独存就行了。 然后正常状压dp就很好搞了。 题干: Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。 在晚宴上,主办方为大家提供了 n−1 ...

weixin_30613343的博客 163

【BZOJ4197】[Noi2015]寿司晚宴【状压DP】【背包】

【题目链接】 一开始取了前10个质数状压,然后就TLE了...改成前8个就没事了。 /* Pigonometry */ #include #include #include using namespace std; typedef long long LL; const int maxn = 505, maxk = 505; int n, p, prime[maxn], cn

BraketBN 740

[NOI2015][BZOJ4197][状压DP]寿司晚宴

Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。 在晚宴上,主办方为大家提供了 n−1 种不同的寿司,编号 1,2,3,…,n−1,其中第 i 种寿司的美味度为 i+1 (即寿司的美味度为从 2 到 n)。 现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方

Welcome! 453
上一篇: NOI 2015 品酒大会 后缀数组
下一篇: NOI 2016 优秀的拆分 后缀数组
dy0607
博客等级 码龄12年 16粉丝 38原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值