BZOJ 2111: [ZJOI2010]Perm 排列计数 DP+lucas定理

工业焊缝缺陷检测实战:我用PatchCore在自建数据集上踩过的那些坑 本文详细介绍了PatchCore算法在工业焊缝缺陷检测中的实战应用,包括数据准备、模型调参和阈值优化等关键环节。通过分析焊缝图像的特殊性和anomaly detection技术的优化策略,分享了在自建数据集上提升检测精度的实用经验,为工业质检领域提供有价值的参考方案。 阅读详情

时空隧道


分析:
盯着Pi>Pi/2这个条件看了很久觉得很眼熟…但是就是想不出来…
后来搜了一下题解…发现woc这不就是小根堆…
这就很简单了…DP就好了…
f[i]=f[l]*f[r]*C(i-1,l) (f[i]代表的是有i个节点的方案数)
但是由于n可能大于MOD,所以要用到lucas定理…
C(n,m)=C(n/MOD,m/MOD)*C(n%MOD,m%MOD)


代码如下:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
//by NeighThorn
#define int long long 
//飘风回而起闰兮,举帷幄之襜襜
using namespace std;
const int maxn=1000000+5;
int n,f[maxn],MOD;
long long factorial[maxn],Pow[30+5];
inline int calcl(int x){
    int i,tmp=x;
    for(i=0;i<=30&&x>=Pow[i];i++)
        x-=Pow[i];
    if(x==0)
        return (tmp-1)/2;
    else if(x>=Pow[i-1])
        return Pow[i]-1;
    else        
        return Pow[i-1]+x-1;
}
inline int calcr(int x){
    int i,tmp=x;
    for(i=0;i<=30&&x>=Pow[i];i++)
        x-=Pow[i];
    if(x==0)
        return (tmp-1)/2;
    else if(x>=Pow[i-1])
        return x-1; 
    else
        return Pow[i-1]-1;
}
inline int power(int x,int y){
    long long ans=1;
    while(y){
        if(y&1)
            ans=ans*(long long)x%MOD;
        x=(long long)x*(long long)x%MOD,y>>=1;
    }
    return ans;
}
inline int calc(int x,int y){
    return (long long)factorial[y]*(long long)power(factorial[y-x],MOD-2)%MOD*(long long)power(factorial[x],MOD-2)%MOD;
}
inline int C(int x,int y){
    return y==0?1:(long long)C(x/MOD,y/MOD)*(long long)calc(x%MOD,y%MOD)%MOD;
}
signed main(void){
    scanf("%lld%lld",&n,&MOD);factorial[0]=1;Pow[0]=1;
    for(int i=1;i<=n;i++)
        factorial[i]=factorial[i-1]*i%MOD;
    for(int i=1;i<=30;i++)
        Pow[i]=Pow[i-1]<<1;
    f[1]=1;f[0]=1;
    for(int i=2,x;i<=n;i++)
        f[i]=f[x=calcl(i)]*f[calcr(i)]%MOD*C(x,i-1)%MOD;
    cout<<f[n]<<endl;
    return 0;
}

by >_< NeighThorn

避坑指南:在Linux服务器上用Conda安装antiSMASH 5.2.0(解决Jinja2报错和Matplotlib权限问题) 本文详细介绍了在Linux服务器上使用Conda安装antiSMASH 5.2.0的避坑指南,重点解决了Jinja2报错和Matplotlib权限问题。通过创建专用conda环境、安装指定版本依赖包和配置缓存目录,帮助用户顺利完成antiSMASH的本地部署,适用于批量处理基因组分析任务。 阅读详情

相关推荐

SAP S/4HANA 可扩展性 – 面向初学者的简化指南

可扩展性(Extensibility)是 SAP ECC 和 SAP S/4HANA 的一项关键功能。它使客户能够通过定制其业务流程来创造竞争优势,并使合作伙伴能够通过量身定制的解决方案来丰富核心 ECC 或 S/4HANA。在过去的几十年中,SAP 的 on-premise 版本客户和合作伙伴主要使用经典的 ABAP 扩展性来扩展他们的 ERP 解决方案。经典扩展性允许 ABAP 开发人员使用甚至修改所有 SAP 对象。尽管经典扩展性非常强大和灵活,但在当今的云世界中,它已不再是一个好的选择。

SAP学习成长之路的博客 1808

BZOJ 2111 [ZJOI2010]Perm 排列计数:Tree dp + Lucas定理

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题意:   给定n,p,问你有多少个1到n的排列P,对于任意整数i∈[2,n]满足P[i]>P[i/2]。   保证p为质数,输出答案 mod p的值。(n <= 10^6, p <= 10^9) 题解:   对于每个i,分别向i*2和i*...

a1392136的博客 186

手把手教你用Docker快速部署开源MES系统(附避坑指南)

本文提供了一份详细的实战指南,手把手教你使用Docker容器化技术快速部署开源MES系统。内容涵盖从环境准备、项目选型、数据库配置到应用服务器优化、前端部署及生产环境监控的全流程,并附有避坑指南,旨在帮助中小制造企业IT人员和开发者低成本、高效率地构建智能制造解决方案。

f0g1h2的博客 1058

BZOJ 2111: [ZJOI2010]Perm 排列计数(DP+Lucas定理)

题面 http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题解 题目大意:求n个节点的点权为1-n的排列的完全二叉树中有多少个小根堆。 很明显,将题目中的排列当成编号1-n的完全二叉树,然后在上面放1-n的点权,要求满足节点x的权值小于节点x&lt;&lt;1和x&lt;&lt;1|1。 树形DP,令f[x]为以x为根的方案,...

Ab.Ever 405

从报错到定位:Memtest86 DQ位算法解析与实践指南

本文深入解析了Memtest86内存测试工具报错信息的解读方法,重点介绍了通过地址解析、数据转换、位比对和DQ定位四步算法,精准锁定故障DQ位的实践流程。文章以DDR4和DDR5为例,详细拆解了从十六进制报错到二进制比对的完整步骤,并提供了从单个报错分析到故障模式诊断的进阶指南,帮助用户将抽象的报错信息转化为具体的维修或排查依据。

sre5engineer的博客 486

RK3588上跑通Zipformer语音识别的3个坑与填坑实录(附完整编译命令)

本文详细记录了在RK3588开发板上部署Zipformer语音识别模型时遇到的三个典型问题及其解决方案,包括静态库版本冲突、编译脚本配置错误以及模型转换精度调优。文章提供了完整的编译命令和实战步骤,帮助开发者快速在边缘设备上实现高效的语音识别应用。

l6m7n8的博客 714

BZOJ 2111: [ZJOI2010]Perm 排列计数|组合数学|Lucas定理|DP

题目也就是让求1..n1..n的小根堆的数目 F[i]F[i]表示以标号为i的点做堆顶的合法堆的数目 f[i]=C(size[i]−1,size[i<<1])∗f[i<<1]∗f[i<<1|1]f[i]=C(size[i]-1,size[i<<1])*f[i<<1]*f[i<<1|1] 组合数要用Lucas定理求!#include<bits/stdc++.h> using namespace

ws_yzy的博客 636

最新Docker GPU支持全解析:为什么nvidia-smi能用但PyTorch找不到CUDA?

本文深入解析了Docker容器中nvidia-smi命令可用但PyTorch无法调用CUDA的根本原因。关键在于默认配置仅暴露了GPU的utility管理能力,而CUDA计算所需的compute能力未被激活。通过正确设置NVIDIA_DRIVER_CAPABILITIES环境变量为compute,utility,并配合--gpus参数,即可解决此问题,确保AI训练等任务顺利进行。

convnet3designer的博客 237

【bzoj2111】【zjoi2010】【perm排列计数】【dp+Lucas定理】

Description 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很大,只能输出模P以后的值 Input 输入文件的第一行包含两个整数 n和p,含义如上所述。 Output 输出文件中仅包含一个整数,表示计算1,2,⋯, ���的排列中, Magic排列的个数模

sunshinezff的专栏 2138

ROS实践(四)机器人SLAM建图(gmapping)

本文介绍了SLAM技术及其实现方法。SLAM(同步定位与地图构建)让机器人在未知环境中通过传感器数据自主定位并构建地图。文章详细讲解了激光雷达、RGBD相机等常用传感器,以及gmapping和map_server这两个ROS功能包的使用方法。重点阐述了SLAM建图实验步骤:配置gmapping节点参数、启动机器人仿真、运行gmapping节点、使用rviz可视化工具、通过键盘遥控机器人完成地图构建并保存。实验结果表明,该方法能有效实现机器人自主建图功能,为后续导航等应用奠定基础。

qq_1033275663的博客 4329

【YOLOv11改进[Backbone]】 使用Ghostnetv2替换Backbone

使用Ghostnetv2替换Backbone

静谧、淡雅 518

BZOJ2111 [ZJOI2010]Perm 排列计数

我们把整个序列看成一棵树,x的左儿子是2x,右儿子是2x+1 这样问题就变成了给这棵树标号,儿子的标号必须比父亲大 dp即可 f[i]表示以i为根的子树,在标号集合已经确定的情况下的标号方案数 如果i是叶子,f[i]=1 如果i只有1个儿子,f[i]=f[2i] 如果i有两个儿子,f[i]=f[2i]*f[2i+1]*C(siz[2i]+siz[2i+1],siz[2i]) siz为

neither_nor 705

【Inpho精品教程】Inpho简介、安装教程(附Inpho8安装包下载)

本文介绍Trimble旗下Inpho UASMaster航空摄影测量软件,涵盖其核心功能模块(如Match-AT、OrthoMaster、Summit Evolution等)及安装教程。文章详细说明了从安装到汉化破解的全过程,并提供Inpho 8.0.1安装包下载链接与提取码,适用于无人机摄影测量专业用户。

智慧空间实验室 1万+

Perm排列计数(bzoj2111)

2111: [ZJOI2010]Perm 排列计数Time Limit: 10 Sec&nbsp;&nbsp;Memory Limit: 259 MBSubmit: 2686&nbsp;&nbsp;Solved: 811[Submit][Status][Discuss]Description称一个1,2,…,N的排列P1,P2…,Pn是Magic的,当且仅当2&lt;=i&lt;=N时,Pi&gt...

cggwz的信息飞船 678

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

BZOJ 2111: [ZJOI2010]Perm 排列计数 [Lucas定理]

2111: [ZJOI2010]Perm 排列计数 Time Limit:10 SecMemory Limit:259 MBSubmit:1936Solved:477[Submit][Status][Discuss] Description 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2....

weixin_30699831的博客 175

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【递推+lucas定理】BZOJ2111 [ZJOI2010]Perm 排列计数

题面在这里可以发现,此数列恰好满足堆性质可以把它看做小根堆的数组储存形式然后就可以愉快的DP了: fi=Csize lsonsize ifi∗2fi∗2+1 f_i=C_{size\ i}^{size\ lson} f_{i*2}f_{i*2+1} 注意当n>pn>p时,可能不存在(n!)−1   (mod p)(n!)^{-1}\ \ \ (mod\ p)所以lucas定理就可以了示例程序

linkfqy 886

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

bzoj 2111 [ZJOI2010]Perm 排列计数

2111: [ZJOI2010]Perm 排列计数 Time Limit:10 SecMemory Limit:259 MB Description 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很大,只能输出模P以后的值 Inp...

weixin_30726161的博客 115

bzoj2111 [ZJOI2010]Perm 排列计数

2111: [ZJOI2010]Perm 排列计数 Time Limit:10 SecMemory Limit:259 MBSubmit:2418Solved:688[Submit][Status][Discuss] Description 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>...

weixin_30872789的博客 117

BZOJ2111: [ZJOI2010]Perm 排列计数

BZOJ2111根据题目所给信息,要求所有2<=i<=N2<=i<=N时,满足Pi>Pi/2P_i>P_{i/2} 列一下,就是:p2>p1p_2>p_1,p3>p1p_3>p_1,p4>p2p_4>p_2,p5>p2p_5>p_2,p6>p3p_6>p_3,p7>p3p_7>p_3 发现很像一颗二叉树!就是一颗二叉树。。 满足根节点小于两个儿子节点。 然后显然有子结构,可以dpdp 对于

Heret1c 480

【BZOJ】2111: [ZJOI2010]Perm 排列计数 计数DP+排列组合+lucas

【题目】BZOJ 2111 【题意】求有多少1~n的排列,满足\(A_i>A_{\frac{i}{2}}\),输出对p取模的结果。\(n \leq 10^6,p \leq 10^9\),p是素数。 【算法】计数DP+排列组合+lucas 【题解】令i的父亲为i/2,转化为要求给一棵n个点的完全二叉树编号使得儿子编号>父亲编号。 设\(f[i]\)表示以第i个点为根的子树的编号方案数(1...

weixin_34199405的博客 243

Java Web图书管理系统实战:Servlet/JSP与JDBC全流程解析

在Java Web开发中,理解底层运行机制是构建稳定Web应用的基础。Servlet作为服务端核心组件,负责处理HTTP请求与响应,其生命周期由容器管理;JSP则通过编译为Java类实现动态页面渲染,首次访问时的编译过程可通过Tomcat的work目录查看源码。JDBC连接管理与事务控制直接关系到数据一致性,而Tomcat作为轻量级Servlet容器,其部署配置、类加载机制和JSP编译产物都是排查线上问题的关键。本文以图书管理系统为载体,从数据库三表设计、分层架构搭建、登录鉴权与Session管理、分页查询

weixin_33847182的博客 422

【bzoj2111】[ZJOI2010]Perm 排列计数 dp+Lucas定理

题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Mogic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Mogic的,答案可能很大,只能输出模P以后的值 输入 输入文件的第一行包含两个整数 n和p,含义如上所述。 输出 输出文件中仅包含一个整数,表示计算1,2,⋯, n的排列中, Mogic排列的个数模 p的值。 ...

weixin_30834019的博客 166

bzoj 2111: [ZJOI2010]Perm 排列计数【树形dp+lucas】

是我想复杂了 首先发现大于关系构成了一棵二叉树的结构,于是树形dp 设f[i]为i点的方案数,si[i]为i点的子树大小,递推式是\( f[i]=f[i*2]*f[i*2+1]*C_{si[i]-1}^{si[i*2]} \) 组合数用Lucas求 #include<iostream> #include<cstdio> using namespace std; long l...

weixin_30780649的博客 92

[BZOJ2111][ZJOI2010]排列计数(DP+组合数)

题意:求11到nn的所有排列中,满足小根堆性质的排列的个数。 这里建立DPDP模型:f[i]f[i]表示ii个不同的数的所有排列中满足小根堆性质的排列的个数。 对于转移,首先计算出ii个节点的完全二叉树中,根节点的左子树包含的节点数ll,右子树包含的节点数rr。 首先,根节点的值必须为最小值。再考虑剩下的i−1i-1个节点。很容易想到,可以在这i−1i-1个节点中选出ll个节点作为左子树,剩下

女装的你,如此好看! 420

[BZOJ2111][ZJOI2010]Perm排列计数(组合数学)

题意就是求一个n个点的堆的合法形态数。 显然,给定堆中所有数的集合,则这个堆的根是确定的,而由于堆是完全二叉树,所以每个点左右子树的大小也是确定的。 设以i为根的堆的形态数为F(i),所以F(i)+=F(sz[2*i])*F(sz[2*i+1])*C(sz[i]-1,sz[2*i])。直接DP即可。 有个令人无语的坑,n可能大于p,要用Lucas。 还有求阶乘逆元的时候根本不需要用快速幂算...

weixin_30691871的博客 139
上一篇: BZOJ 1486: [HNOI2009]最小圈 分数规划
下一篇: HDU 1512 Monkey King 并查集+左偏树
NeighThorn
博客等级 码龄11年 20粉丝 171原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值