poj 1430 Binary Stirling Number 求斯特林数奇偶性 数形结合| 斯特林数奇偶性与组合数的关系+lucas定理 好题
题目大意
求子集斯特林数\(\left\{\begin{matrix}n\\m\end{matrix}\right\}\%2\)
方法1 数形结合
推荐一篇超棒的博客by Sdchr
就是根据斯特林的递推式,分奇偶讨论
得到一个函数\(P_{n,m}\equiv\left\{\begin{matrix}n\\m\end{matrix}\right\}\% 2\)
再根据函数递推式通过画图,数形结合
转化成图中从一点走到另一点的方案数
变成组合问题求解
做法
这是给连插板都不会的我看的
\(a_1+a_2+...+a_n=D,a_i\ge0\)
大于等于0这个条件难易插板
我们变成
\((a_1+1)+(a_2+1)+...+(a_n+1)=D+n,(a_i+1)\ge1\)
就变成\(D+n-1\)个空隙插\(n-1\)块板了
姿势
要求阶乘中有多少个二的因子
就是\(2^1\)的倍数个数+\(2^2\)的倍数个数+\(2^3\)的倍数个数
LL num(int x){
LL res=0;
for(int i=2;i<=x;i<<=1) res+=x/i;
return res;
}
solution
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long LL;
const int Q=1000000007;
const int M=2003;
inline LL rd(){
LL x=0;bool f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=0;
for(;isdigit(c);c=getchar()) x=x*10+c-48;
return f?x:-x;
}
int tcas;
LL n,m,D,odd;
LL num(int x){
LL res=0;
for(int i=2;i<=x;i<<=1) res+=x/i;
return res;
}
int Calc(int x,int y){
return num(x)-num(y)-num(x-y) == 0;
}
int main(){
int i;
tcas=rd();
while(tcas--){
n=rd(),m=rd();
D=n-m;
odd=(m+1)/2;
printf("%d\n",Calc(D+odd-1,odd-1));
}
return 0;
}
方法二 斯特林数mod 2意义下与组合数关系+lucas定理
\(\left\{\begin{matrix}n\\m\end{matrix}\right\}=\dbinom {z}{w}\)
其中\(z=\lceil n-\frac {m+1} 2\rceil,w=\lfloor \frac {m-1} 2\rfloor\)
而又有结论\(\dbinom n m\%2=[n\)&\(m=m]\)
为什么,用lucas定理证一下
\(\dbinom n m\equiv \dbinom {n\%2}{m\%2}\dbinom{n/2}{m/2}(mod 2)\)
注意到这一项\(\dbinom {n\%2}{m\%2}\)
我们把n,m转为二进制
\(\binom0 1=0\),则若\(n_i=0\),\(m_i=1\),则\(\binom n m\equiv 0(mod 2)\)
\(\binom1 0=\binom 1 1=1\),则若\(n_i=1\),无论\(m_i\)为0还是1对奇偶性无影响
所以有结论
\(\dbinom n m\%2=[n\)&\(m=m]\)
poj 1430 Binary Stirling Number 求斯特林数奇偶性 数形结合| 斯特林数奇偶性与组合数的关系+lucas定理 好题的更多相关文章
- POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)
题目链接 http://poj.org/problem?id=1430 题解 qaq写了道水题-- 在模\(2\)意义下重写一下第二类Stirling数的递推式: \[S(n,m)=S(n-1,m-1 ...
- poj 1430 Binary Stirling Numbers
Binary Stirling Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1761 Accepted ...
- POJ 1423:Big Number 求N的阶乘的长度 斯特林公式
Big Number Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27027 Accepted: 8626 Descr ...
- 求大的组合数模板 利用Lucas定理
Lucas定理:A.B是非负整数,p是质数.A B写成p进制:A=a[n]a[n-1]…a[0],B=b[n]b[n-1]…b[0]. 则组合数C(A,B)与C(a[n],b[n])C(a[n-1], ...
- 学习总结:斯特林数( Stirling number )
基本定义 第一类斯特林数:$1 \dots n$的排列中恰好有$k$个环的个数:或是,$n$元置换可分解为$k$个独立的轮换的个数.记作 $$ \begin{bmatrix} n \\ k \end{ ...
- POJ1430 Binary Stirling Numbers
@(POJ)[Stirling數, 排列組合, 數形結合] Description The Stirling number of the second kind S(n, m) stands for ...
- 用x种方式求第n项斐波那契数,99%的人只会第一种
大家好啊,我们又见面了.听说有人想学数据结构与算法却不知道从何下手?那你就认真看完本篇文章,或许能从中找到方法与技巧. 本期我们就从斐波那契数列的几种解法入手,感受算法的强大与奥妙吧. 原文链 ...
- 【Stirling Number】
两类Stirling Number的简介与区别(参考自ACdreamer的CSDN) Stirling Number I --- s(n,k):将n个物体排成k个非空循环排列(环)的方法数. 递推式: ...
- 求一个数组中第K小的数
面试南大夏令营的同学说被问到了这个问题,我的第一反应是建小顶堆,但是据他说用的是快排的方法说是O(n)的时间复杂度, 但是后来经过我的考证,这个算法在最坏的情况下是O(n^2)的,但是使用堆在一般情况 ...
随机推荐
- python之*的魔性用法
1. *在函数中的作用 聚合 在函数定义时聚合 def eat(args): print('我请你吃:',args) eat('蒸羊羔儿') # 输出结果 # 我请你吃: 蒸羊羔儿 打散 在函数执行时 ...
- CocoaPods在OS X Yosemite上突然不能用了的解决办法
最近开发的时候发现自己的CocoaPods不能使用了! 根据报的错误上网搜寻answer,于是搜到了解决办法 在 OS X Yosemite 报这样的错: [MT] DVTAssertions: AS ...
- tensorflow目标检测API之建立自己的数据集
1 收集数据 为了方便,我找了11张月儿的照片做数据集,如图1,当然这在实际应用过程中是远远不够的 2 labelImg软件的安装 使用labelImg软件(下载地址:https://github.c ...
- UVa 12171 题解
英文题面不怎么友好,大家还是自行通过紫书了解题面吧... 解题思路: 1. 面对500 ^ 3的数据范围,我们需要先用离散化解决掉爆空间的问题. 2. 由于我们要求的总体积包括内空部分的体积,我们可以 ...
- 03IO端口寻址和访问控制方式
1. I/O端口和寻址 CPU 为了访问 I/O 接口控制器或者控制卡上的数据和状态信息,需要首先指定他们的地址.这种地址就称为I/O端口地址或简称端口.通常一个 I/O 控制器包含访问数据的数据端口 ...
- Linux菜鸟起飞之路【九】系统启动流程
Linux系统启动流程 BIOS -> MBR -> BootLoader -> Kernel -> init 1.打开电源后,计算机从主板的BIOS中读取其中存储的程序.这 ...
- MyBatis的mapper.xml文件的参数问题:org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map
配置参数类型有两种选择,即:parameterType和parameterMap 不管参数是否是基本数据类型还是map类型,都是使用parameterType. 版权声明:本文为博主原创文章,未经博主 ...
- 爬虫之scrapy工作流程
Scrapy是什么? scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量代码,就能够快速的抓取到数据内容.Scrapy 使用了 Twisted['twɪstɪd] ...
- BFS:UVa1590-IP Networks (子网掩码相关知识)
IP Networks Alex is administrator of IP networks. His clients have a bunch of individual IP addresse ...
- poj 3616 奶牛产奶问题 dp算法
题意:奶牛产奶,农夫有m个时间段可以挤奶,在工作时间 f t 内产奶量为m,每次挤完奶后,奶牛需要休息R.问:怎么安排使得产奶量最大? 思路:区间dp dp[i]表示第i个时段 对农夫工作的结束时间 ...