luoguP8764 [蓝桥杯 2021 国 BC] 二进制问题

luogu题目传送门

题目描述

小蓝最近在学习二进制。他想知道 1 到 N 中有多少个数满足其二进制表示中恰好有 K 个 1。你能帮助他吗?

输入格式

输入一行包含两个整数 N 和 K。

输出格式

输出一个整数表示答案。

输入输出样例

输入 #1

7 2

输出 #1

3

说明/提示

对于 30% 的评测用例, 1\leq N \leq 10^{6},1≤K≤10 。

对于 60% 的评测用例, 1\leq N \leq 2*10^{9},1≤K≤30 。

对于所有评测用例, 1 \leq N \leq 10^{18},1≤K≤50 。

蓝桥杯 2021 国赛 B 组 H 题(C 组 J 题)。

思路

像这样时间复杂度O(N)都要超的题目显然是数位dp,只是将原来的十进制改为二进制就可以了

对于深搜的第二个参数,我们只需要定义一个sum,记录已经选了几个 1 

最后退出时如果 sum 不为 k 就返回 0,否则返回 1

Code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
ll f[205][205][2],a[205],k;
ll dfs(ll pos,ll sum,ll lim){if(pos==0){if(sum==k)return 1;//sum==k 才满足条件 return 0;}if(f[pos][sum][lim]!=-1)return f[pos][sum][lim];//如果有了就直接返回 ll ans=0;ll en=(lim?a[pos]:1);//小细节:二进制最大为 1 ,不要打成 9 for(ll i=0;i<=en;i++){ans+=dfs(pos-1,sum+(i==1),lim&&i==en);}return f[pos][sum][lim]=ans;
}
ll solve(ll x){ll o=0;memset(f,-1,sizeof(f));memset(a,0,sizeof(a));while(x>0){//将 x 转为二进制 a[++o]=x%2;x/=2;}return dfs(o,0,1);
}
int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);ll r;cin>>r>>k;cout<<(solve(r)-solve(0));return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19029.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:深入了解进程信号(上)

目录 1. 什么是信号 1.1 引入 1.2 概念 1.3 特性 1.4 信号的三个方面 2. 信号的产生 2.1 键盘按键产生 2.2 signal捕捉信号函数 2.3 发送信号原理 2.4 硬件中断 2.5 指令和函数接口 2.5.1 kill指令 2.5.2 kill函数 2.5.3 raise与abort函数 2.6 软件条件 2.7 异…

rustdesk远程桌面自建服务器

首先&#xff0c;我这里用到的是阿里云服务器 centos7版本&#xff0c;win版客户端。 准备工作 centos7 服务器端文件&#xff1a; https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-linux-amd64.zip win版客户端安装包&#xff1…

PostgreSQL有undo表空间吗?

PostgreSQL有undo表空间吗 PostgreSQL 没有单独的 Undo 表空间&#xff0c;其事务回滚和多版本并发控制&#xff08;MVCC&#xff09;机制与 Oracle 等数据库有显著差异。 一 PostgreSQL 的 MVCC 实现 PostgreSQL 通过 多版本并发控制&#xff08;MVCC&#xff09; 管理事务…

Java项目《苍穹外卖》BUG修复记录

一、订单详情地址显示为null 原因&#xff1a;查看订单详情接口中&#xff0c;未设置收货地址信息&#xff0c;故地址返回为null。 解决方案&#xff1a; 1、OrderServiceImpl中创建一个私有方法专门获取订单收货地址 /*** 获取订单收获地址* param addressBookId* return*/…

NO.18十六届蓝桥杯备战|循环嵌套|乘法表|斐波那契|质数|水仙花数|(C++)

循环嵌套 循环嵌套的使⽤ while &#xff0c; do while &#xff0c; for &#xff0c;这三种循环往往会嵌套在⼀起才能更好的解决问题&#xff0c;就是我们所说的&#xff1a;循环嵌套。这三种循环都可以任意嵌套使⽤ ⽐如&#xff1a; 写⼀个代码&#xff0c;打印⼀个乘法⼝…

【第6章:强化学习基础与深度强化学习—6.4 强化学习在游戏、自动驾驶等领域的应用案例】

你是否想过,为什么《王者荣耀》的AI总能预判你的走位?特斯拉的Autopilot如何实现复杂路况的决策?这背后都藏着一个改变人工智能格局的技术——强化学习。今天我们将深入这个让机器学会"思考"的黑科技,揭开它从基础理论到工业应用的全貌。 一、强化学习的"…

【Linux内核】进程管理(上)

一、进程简介 关于进程相关内容直接看我的操作系统专栏&#xff0c;在这里不再赘述。我们直接快进到Linux中的进程管理部分 二、Linux中的进程描述符 晋城市操作系统中调度的实体&#xff0c;因此需要对进程的信息、所持有的资源进行描述&#xff0c;这种抽象描述称之为进程…

类和对象(5)——抽象类和接口

目录 1. 抽象类 1.1 抽象类的概念 1.2 抽象类语法&#xff1a;abstract关键字 1.3 抽象类的特性 1.4 抽象类的作用 2. 接口 2.1 接口的概念 2.2 接口语法&#xff1a;interface关键字 2.3 接口的实现&#xff1a;implements关键字 2.4 接口的特性 2.5 实现多个接口 …

利用租用的GPU进行训练

对于大模型的微调以及推理&#xff0c;对显卡的要求较高&#xff0c;我们就可以通过租一台来进行训练&#xff0c;这里我租用的是&#xff1a;AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL 推荐博客&#xff1a;新手小白如何租用GPU云服务器跑深度学习_gpu租用-CSDN博客…

[操作系统] 基础IO:系统文件I/O

在 Linux 操作系统中&#xff0c;文件 I/O&#xff08;输入/输出&#xff09;是程序与文件系统交互的基础。理解文件 I/O 的工作原理对于编写高效、可靠的程序至关重要。本文将深入探讨系统文件 I/O 的机制。 一种传递标志位的方法 在 Linux 中&#xff0c;文件的打开操作通常…

Qt MainWindow

文章目录 0. 概述1. 菜单栏 QMenuBar1.1 例子1&#xff0c;使用图形化界面1.2 例子2&#xff0c;使用代码创建1.3 例子3&#xff0c;添加快捷键1.4 例子4&#xff0c;添加子菜单1.5 例子5&#xff0c;添加分割线和图标1.6 内存泄漏问题 2. 工具栏 QToolBar2.1 例子1&#xff0c…

阅读论文“用于车联网安全车载通信的机器学习技术“的学习笔记

前言 论文全称为Machine Learning Technologies for Secure Vehicular Communication in Internet of Vehicles: Recent Advancesc and Applications 智能交通系统&#xff08;ITS&#xff09;和计算系统的快速发展为智能交通安全提供了新的科学研究&#xff0c;并提供了舒适和…

[java] 集合-Collection、ArrayList、LinkedList源码篇

目录 Collection集合 集合类体系结构 常用方法 遍历方式 迭代器遍历 增强for lambda表达式 List集合 特有方法 五种遍历方式 细节点注意 List集合的实现类 List集合子类的特点 LinkedList集合的特有功能 源码分析 ArrayList源码分析 LinkedList源码分析 迭代…

DeepSeek自动化写作软件

DeepSeek写作软件的三大核心功能 对于内容创作者来说&#xff0c;写作不仅是表达思想的过程&#xff0c;更是一项需要投入大量时间和精力的任务。面对日益增长的内容需求&#xff0c;写作效率低下、内容质量不高等问题&#xff0c;常常让创作者感到焦虑。而 DeepSeek 写作软件…

前端里的this指向问题

目录 1.代码输出结果 2.代码输出结果 3.代码输出结果 4.代码输出结果 5.代码输出结果 6.代码输出结果 7.代码输出结果 8.代码输出结果 9.代码输出结果 10.代码输出结果 11.代码输出结果 12.代码输出结果 13.代码输出结果 14.代码输出结果 总结 1.代码输出结果 f…

苹果CMS新版站群管理更新_新增批量生成插件优势何在

引言 随着互联网的发展&#xff0c;站群管理成为了网站运营者提升流量和SEO效果的重要策略。苹果CMS新版站群管理系统通过引入批量生成插件&#xff0c;为用户提供了更高效、更智能的解决方案。本文将详细介绍这一更新的功能特点及其优势。 站群管理功能特点 多域名独立配置…

时序约束进阶八:时钟抖动Jitter与不确定性Uncertainty

目录 一、前言 二、时钟抖动 2.1 时钟抖动类型 2.2 set_input_jitter 2.3 set_system_jitter 2.4 set_clock_uncertainty 2.5 设计代码 2.6 约束解析 2.7 Input_jitter报告 2.8 System Jitter报告 2.9 Clock Uncertainty报告 2.9.1 Uncertainty的计算 2.9.2 Uncer…

小米 R3G 路由器(Pandavan)实现网络打印机功能

小米 R3G 路由器&#xff08;Pandavan&#xff09;实现网络打印机功能 一、前言 家中有多台 PC 设备需要打印服务&#xff0c;但苦于家中的 Epson L380 打印机没有网络打印功能&#xff0c;并且配置 Windows 共享打印机实在是过于繁琐且需要共享机保持唤醒状态过于费电。想到…

Leetcode Hot100 第30题 416.分割等和子集

class Solution { public:bool canPartition(vector<int>& nums) {int sum0;for(int num:nums){sumnum;}if(sum%21) return false;int bag_size sum/2;// return dfs(nums,nums.size()-1,bag_size);//递归做法vector<vector<bool>> dp(nums.size()1,vec…

技术晋升读书笔记—阿里管理三板斧(二)

一、引子 美团王兴问马云&#xff1a;“你最强的地方是什么&#xff1f;” 马云反问王兴&#xff1a;“你觉得呢&#xff1f;” 王兴回答&#xff1a;“战略和忽悠。” 马云哈哈大笑&#xff0c;笑完&#xff0c;他一本正经地说&#xff1a;“我最强的地方是管理。” &quo…