Solution -「SP 106」BINSTIRL
Description
Link.
求 \(\begin{Bmatrix}n \\ m\end{Bmatrix}\bmod2\)
Solution
求
\begin{Bmatrix}n \\ m\end{Bmatrix}\bmod2
&=\left(\begin{Bmatrix}n-1 \\ m-1\end{Bmatrix}+m\begin{Bmatrix}n-1 \\ m\end{Bmatrix}\right)\bmod2 \\
&=\begin{cases}
\begin{Bmatrix}n-1 \\ m-1\end{Bmatrix}\bmod2,m\equiv0\space(\operatorname{mod}2) \\
\left(\begin{Bmatrix}n-1 \\ m-1\end{Bmatrix}+\begin{Bmatrix}n-1 \\ m\end{Bmatrix}\right)\bmod2,m\equiv1\space(\operatorname{mod}2)
\end{cases}
\end{aligned}
\]
\(m\equiv1\space(\operatorname{mod}2)\) 的情况为组合数的递推。
转化一下,把填表转移换成刷表,即
当 \(m\equiv0\space(\operatorname{mod}2)\) 时,\(\begin{Bmatrix}n \\ m\end{Bmatrix}\) 转移到 \(\begin{Bmatrix}n+1 \\ m+1\end{Bmatrix}\)。
当 \(m\equiv1\space(\operatorname{mod}2)\) 时,\(\begin{Bmatrix}n \\ m\end{Bmatrix}\) 转移到 \(\begin{Bmatrix}n+1 \\ m+1\end{Bmatrix}\) 和 \(\begin{Bmatrix}n+1 \\ m\end{Bmatrix}\)。
那么这个题目就转化成了在表格上 \((0,0)\) 走到 \((n,m)\) 的路径条数 \(\operatorname{mod}2\) 问题。
两种情况都可以转移到 \(\begin{Bmatrix}n+1 \\ m+1\end{Bmatrix}\),为了方便起见,我们定义这种情况为向右上转移,把 \(\begin{Bmatrix}n+1 \\ m\end{Bmatrix}\) 定义为向上转移。
因为我们转移只能向上或右上走,所以只会走 \(n\) 步,其中 \(m\) 次向右上转移,\(n-m\) 次向右转移。
我们一共有 \(\lfloor\frac{m+1}{2}\rfloor\) 次机会向右转移(只能从奇数走)。
相当于我们现在需要把转移的过程分成 \(n-m\) 段,每一段的内部全部都是向右上转移,这样我们才能到达 \((n,m)\)。
用盒子与球的语言来描述,就是一共就有 \(n-m+\lfloor\frac{m+1}{2}\rfloor\) 个球(这里理解起来其实特别麻烦)(不过只是对于我这种组合差的人),分成 \(\lfloor\frac{m+1}{2}\rfloor\) 段,隔板即可。
于是 \(\begin{Bmatrix}n \\ m\end{Bmatrix}\bmod2={n-m+\lfloor\frac{m+1}{2}\rfloor-1\choose\lfloor\frac{m+1}{2}\rfloor-1}\bmod2\)。
关于组合数奇偶性,我这篇博客里写过,再贴上来:
结论:\(\dbinom{n}{m}\equiv0\space(\operatorname{mod}2)\) 当且仅当 \(n\operatorname{bitand}m=m\)。
证明(也许不是特别严谨):我们可以知道:
\]
我们发现:
\]
这一坨,就是在一直进行二进制移位,\(\operatorname{shr}1\)。
那么我们可以得出一个结论:如果对于我们记 \((n)_{k}\) 表示 \(n\) 在二进制意义下的第 \(k\) 位。\((n)_{k}\in[0,1]\)
那么对于 \(\forall i\),有 \((n)_{i}=0\) 且 \((m)_{i}=1\),那么 \(\dbinom{n}{m}\equiv0\space(\operatorname{mod} 2)\)。
所以 \(n\operatorname{bitand}m=m\),证毕。
答案显然。
#include <cstdio>
int N, M;
int main () {
int TC; scanf ( "%d", &TC ); while ( TC -- > 0 ) {
scanf ( "%d%d", &N, &M );
if ( ! N && ! M ) puts ( "1" );
else if ( ! N || ! M || N < M ) puts ( "0" );
else if ( ( ( N - M + ( ( M + 1 ) >> 1 ) - 1 ) & ( ( ( M + 1 ) >> 1 ) - 1 ) ) == ( ( ( M + 1 ) >> 1 ) - 1 ) ) puts ( "1" );
else puts ( "0" );
}
return 0;
}
Solution -「SP 106」BINSTIRL的更多相关文章
- Solution -「SP 6779」GSS7
\(\mathcal{Description}\) 给定一棵 \(n\) 个点的带点权树,\(q\) 次操作: 路径点权赋值. 询问路径最大子段和(可以为空). \(n,q\le10^5\). ...
- Solution -「ARC 104E」Random LIS
\(\mathcal{Description}\) Link. 给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...
- Solution -「CTS 2019」「洛谷 P5404」氪金手游
\(\mathcal{Description}\) Link. 有 \(n\) 张卡牌,第 \(i\) 张的权值 \(w_i\in\{1,2,3\}\),且取值为 \(k\) 的概率正比于 \ ...
- Solution -「BZOJ 3812」主旋律
\(\mathcal{Description}\) Link. 给定含 \(n\) 个点 \(m\) 条边的简单有向图 \(G=(V,E)\),求 \(H=(V,E'\subseteq E)\ ...
- Solution -「CF 1342E」Placing Rooks
\(\mathcal{Description}\) Link. 在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...
- Solution -「Gym 102759G」LCS 8
\(\mathcal{Description}\) Link. 给定 \(m\),和长度为 \(n\),字符集为大写字母的字符串 \(s\),求字符集相同且等长的字符串 \(t\) 的数量,使 ...
- Solution -「ZJOI 2019」「洛谷 P5326」开关
\(\mathcal{Description}\) Link. 有 \(n\) 个开关,初始时所有开关的状态为 \(0\).给定开关的目标状态 \(s_1,s_2,\cdots,s_n\).每 ...
- Solution -「简单 DP」zxy 讲课记实
魔法题位面级乱杀. 「JOISC 2020 Day4」治疗计划 因为是不太聪明的 Joker,我就从头开始理思路了.中途也会说一些和 DP 算法本身有关的杂谈,给自己的冗长题解找借口. 首先,治疗方案 ...
- Solution -「基环树」做题记录
写的大多只是思路,比较简单的细节和证明过程就不放了,有需者自取. 基环树简介 简单说一说基环树吧.由名字扩展可得这是一类以环为基础的树(当然显然它不是树. 通常的表现形式是一棵树再加一条非树边,把图画 ...
- Solution -「WC 2022」秃子酋长
\(\mathscr{Description}\) Link. (It's empty temporarily.) 给定排列 \(\{a_n\}\),\(q\) 次询问,每次给出 \([l,r ...
随机推荐
- C温故补缺(十八):网络编程
计算机网络 参考:TCP三次握手详解. OSI模型 简单分层: 其中,链路层还可以分出物理层和数据链路层.应用层可以分出会话层,表示层和应用层. 七层模型: 链路层:只是物理的比特流和简单封装的数据帧 ...
- 【Leetcode】 #9 回文数
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 - ...
- C++ 学习笔记 (一)
C++标准化组织 https://isocpp.org/std/status http://open-std.org/JTC1/SC22/WG21/ why C++王者归来? https://cool ...
- CF1770F Koxia and Sequence
一步都没想到,一定是状态不好吧,一定吧一定吧? 加训数数! 题意 给定 \(n, x, y\),定义好的序列 \(\{a_i\}_{i = 1}^n\) 满足 \(\sum\limits_{i = 1 ...
- mysql处理delete后不释放磁盘空间
myisam:optimize table table_name innodb:alter table table.name engine='innodb' 1. 问题描述在使用mysql的时候有时候 ...
- 当使用POI打开Excel文件遇到out of memory时该如何处理?
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 当我们开发处理Excel文件时,Apache POI 是许多人 ...
- .NET周报 【7月第1期 2023-07-02】
国内文章 C# 实现 Linux 视频聊天.远程桌面(源码,支持信创国产化环境,银河麒麟,统信UOS) https://www.cnblogs.com/shawshank/p/17420469.htm ...
- PowerBuilder从入坑到放弃(二)编码规范
前言 上一篇我们从0到1用pb开发了一个helloworld程序,并成功将开发的程序编译打包并且制作了安装包. 程序员最讨厌的莫过于写文档和别人不写注释. 不知道大家会不会和我一样,在找bug时,有段 ...
- 报错 no currentsessioncontext configured!
no currentsessioncontext configured! 使用hibernate框架报错 配置了session工厂类,使用getCurrentSession();时候引起的,原因是cu ...
- 用 Golang 从0到1实现一个高性能的 Worker Pool(一) - 每天5分钟玩转 GPT 编程系列(3)
目录 1. 概述 2. 设计 2.1 让 GPT-4 给出功能点 2.2 自己总结需求,再给 GPT 派活 3. 实现 3.1 你先随意发挥 3.2 你得让 Worker 跑起来呀 3.3 你说说 P ...