IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Gym 103443L Leadfoot 二进制+组合数数论 神仙题 -> 正文阅读

[数据结构与算法]Gym 103443L Leadfoot 二进制+组合数数论 神仙题

文章目录


题目链接

题意

有很多人进行一场比赛,比赛是1v1的形式,不会平局,只有胜场和输场数完全相同的选手才能进行比赛,当胜场数到达 n n n或者败场数到达 m m m时,选手将不再参与比赛.比赛完全结束后,主办方将给所有比赛全败的选手颁发一个英勇不屈奖章,问最少要准备多少枚奖章.

题解

观察样例发现所有的答案肯定是 2 2 2的某个幂,且 n , m n,m n,m可以交换.再仔细思考,我们意识到当参赛的总人数是 2 2 2的一个幂时,存在某种胜负场数的人数是奇数,此时参赛的总人数最少,准备的奖章数量也最少.显然这和杨辉三角有关,因此这既是一个二进制数论题也是一个组合数数论题.
再仔细分析,当一名选手以胜场数达到 n n n结束比赛时,他的负场数为 i i i,则这样的人数为 C p + i ? 1 i C^{i}_{p+i-1} Cp+i?1i?,满足这个数为奇数的条件 p > n + i ? _ b p ( n ) ? _ b p ( i ) + _ b p ( n + i ) p>n+i-\_bp(n)-\_bp(i)+\_bp(n+i) p>n+i?_bp(n)?_bp(i)+_bp(n+i),其中 _ b p \_bp _bp__builtin_popcount的简称.由于 n n n 1 0 6 10^6 106,所以 i < n ? 20 i<n-20 i<n?20时,上式便不能出现最大值,故只要暴力枚举 20 20 20 i i i便可得到最优的结果,最后只要用简单的快速幂把答案算出来就好了.

const int yuzu=1e6,mod=1e9+7;
int main() {
  for (int t=read();t--;) {
    ll n,m,zw=0,i;
    #define _bp __builtin_popcount
    read(n),read(m),--n,--m;
    auto kasumi=[&](ll a,ll b=mod-2) {
      ll zw=1;
      for (;b;b>>=1,a=a*a%mod) if (b&1) zw=zw*a%mod;
      return zw;
    };
    for (i=max(0ll,m-20);i<=m;++i) zw=max(zw,n+i+1-_bp(n)-_bp(i)+_bp(n+i));
    printf("%lld\n",kasumi(2,zw-m-1));
  }
}

谢谢大家.

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:19:45  更:2022-04-01 00:20:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:44:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码