洛谷 P6218 [USACO06NOV] Round Numbers S 题解 数位dp

[USACO06NOV] Round Numbers S

题目描述

如果一个正整数的二进制表示中, 0 0 0 的数目不小于 1 1 1 的数目,那么它就被称为「圆数」。

例如, 9 9 9 的二进制表示为 1001 1001 1001,其中有 2 2 2 0 0 0 2 2 2 1 1 1。因此, 9 9 9 是一个「圆数」。

请你计算,区间 [ l , r ] [l,r] [l,r] 中有多少个「圆数」。

输入格式

一行,两个整数 l , r l,r l,r

输出格式

一行,一个整数,表示区间 [ l , r ] [l,r] [l,r] 中「圆数」的个数。

样例 #1

样例输入 #1

2 12

样例输出 #1

6

样例说明

区间 [ 2 , 12 ] [2,12] [2,12] 中共有 6 6 6 个「圆数」,分别为 2 , 4 , 8 , 9 , 10 , 12 2,4,8,9,10,12 2,4,8,9,10,12

数据规模与约定

对于 100 % 100\% 100% 的数据, 1 ≤ l , r ≤ 2 × 1 0 9 1\le l,r\le 2\times 10^9 1l,r2×109

原题

洛谷P6218——传送门

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;int dp[36][36][36], a[36];
int dfs(int pos, int cnt0, int cnt1, int bound, int st) // pos为此时的位置,sum代表此时的数位和,bound判断是否前面所有数都取到了上界,st判断是否前面全为0
{if (pos == 0)                            // 枚举完每一位时返回return cnt0 >= cnt1;                 // 0的个数不小于1的个数则计数if (!bound && dp[pos][cnt0][cnt1] != -1) // 数位dp,可沿用先前处理过的状态的答案,从而降低复杂度return dp[pos][cnt0][cnt1];int max_num; // 可枚举的该位的数的上界if (bound)max_num = a[pos];elsemax_num = 1;int res = 0; // 统计此时的答案for (int i = 0; i <= max_num; i++){if (st && i == 0) // 如果该位填充的0属于前导0,则cnt0和cnt1都不会增加res += dfs(pos - 1, 0, 0, bound && (i == a[pos]), 1);else{// 该位填充0则cnt0加1,填充1则cnt1加1if (i == 0)res += dfs(pos - 1, cnt0 + 1, cnt1, bound && (i == a[pos]), 0);elseres += dfs(pos - 1, cnt0, cnt1 + 1, bound && (i == a[pos]), 0);}}if (!bound && !st) // 没在边界时,记录下该状态对应的答案dp[pos][cnt0][cnt1] = res;return res;
}
int solve(ll x)
{memset(dp, -1, sizeof(dp)); // 将dp数组初始化为-1,表示对应状态的答案目前还未计算出int len = 0;while (x) // 存储该数的二进制{a[++len] = x % 2;x /= 2;}return dfs(len, 0, 0, 1, 1);
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int l, r;cin >> l >> r;cout << solve(r) - solve(l - 1) << '\n'; // ans[l,r]=ans[0,r]-ans[0,l-1]return 0;
}

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

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

相关文章

Linux部署Heartbeat

环境信息&#xff1a; 10.1.13.75 master 10.1.13.140 slave 10.1.13.247 VIP 一&#xff0c;基础环境处理 1&#xff0c;修改主机名 master节点 hostnamectl set-hostname master slave节点 hostnamectl set-hostname slave 2&#xff0c;修改/etc/hosts vi /etc/hos…

transformer与beter

transformer与beter 解码和编码器含义tokizer标记器和one-hot独热编码编码解码--语义较好的维度空间矩阵相乘--空间变换编码理解如何构造降维的嵌入矩阵--实现到达潜空间上面是基础&#xff0c;下面是transformer正文自注意力机制注意力分数--上下文修正系数为什么需要KQ两个矩…

设计模式-07 设计模式-观察者模式(Observer Pattern)

设计模式-07 设计模式-观察者模式&#xff08;Observer Pattern&#xff09; 1.定义 观察者模式是一种软件设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;其中一个对象&#xff08;称为“主题”&#xff09;维护了一个依赖对象的列表&#xff08;称为“观察者”…

ssm125四六级报名与成绩查询系统+jsp

四六级报名与成绩查询系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱&am…

达梦数据插入操作的深坑

提示错误&#xff1a;Only if specified in the column list and SET IDENTITY_INSERT is ON, then identity column could be assigned value 插入的语句采用缺省的方式实现&#xff0c;执行插入操作失败&#xff1b; 原因分析&#xff1a; 1.自增长的SQL表里面插入指定ID的…

DIFT:Emergent Correspondence from Image Diffusion # 论文阅读

URL https://arxiv.org/pdf/2306.03881 主页&#xff1a;https://diffusionfeatures.github.io/ 代码&#xff1a;https://github.com/Tsingularity/dift TD;DR 23 年 6月 cornell 大学的文章&#xff0c;任务是做图片的特征匹配&#xff08;关联&#xff09;&#xff0c;特…

【kali工具使用】Tcpdump 抓包查看三次握手过程

Tcpdump 抓包查看三次握手过程 tcpdump 常用参数&#xff1a; -c 指定要抓取的数据包数量 -n 对 IP 地址以数字方式显式&#xff0c;否则显式为主机名 port 指定端口 -I 指定 tcpdump 需要监听的接口。默认会抓取第一个网络接口 tcp 1ClientSYN1seqx 2Server SYN1 seq…

树莓派|超声波传感器

VCC&#xff1a;超声波模块电源脚&#xff0c;接5V电源即可 Trig&#xff1a;超声波发送脚&#xff0c;高电平时发送出40KHZ出超声波 Echo&#xff1a;超声波接收检测脚&#xff0c;当接收到返回的超声波时&#xff0c;输出高电平 GND&#xff1a;超声波模块GND 测距原理&…

2025考研 | 北京师范大学计算机考研考情分析

北京师范大学&#xff08;Beijing Normal University&#xff09;简称“北师大”&#xff0c;由中华人民共和国教育部直属&#xff0c;中央直管副部级建制&#xff0c;位列“211工程”、“985工程”&#xff0c;入选国家“双一流”、“珠峰计划”、“2011计划”、“111计划”、…

--每周分享--

一、三数之和&#xff1a;15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; public class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> result new ArrayList<>();//判断极限条件&#xff1a;长度不…

NCL绘制WRF domain区域并添加气象站点

读取文件 根据官网例子Using gsn_csm_contour_map to plot WRF-ARW data绘制&#xff1a; ; It shows how to use gsn_csm_xxxx scripts to do the plotting. ; ; You can use the map projection settings on the WRF file, or you ; can use your own map projection. See …

路由器、交换机和网卡

大家使用VMware安装镜像之后&#xff0c;是不是都会考虑虚拟机的镜像系统怎么连上网的&#xff0c;它的连接方式是什么&#xff0c;它ip是什么&#xff1f; 路由器、交换机和网卡 1.路由器 一般有几个功能&#xff0c;第一个是网关、第二个是扩展有线网络端口、第三个是WiFi功…

ncs sdk nrf5340 运行DFU

nrf5340 运行DFU 1. dfu介绍 Nordic 的 DFU&#xff08;Device Firmware Update&#xff09;是一种用于更新设备固件的技术和协议。Nordic Semiconductor 是一家专门设计和制造无线芯片的公司&#xff0c;他们的产品主要用于物联网&#xff08;IoT&#xff09;和无线连接应用…

【数据分析面试】42.用户流失预测模型搭建(资料数据分享)

题目 保持高的客户留存率可以稳定和提到企业的收入。因此&#xff0c;预测和防止客户流失是在业务中常见的一项数据分析任务。这次分享的数据集包括了电信行业、银行、人力资源和电商行业&#xff0c;涵盖了不同业务背景下的流失预测数据。 后台回复暗号&#xff08;在本文末…

整理好了!2024年最常见 100 道 Java基础面试题(四十三)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 100 道 Java基础面试题&#xff08;四十二&#xff09;-CSDN博客 八十五、Java 常用的元注解有哪些&#xff1f; 在Java中&#xff0c;元注解&#xff08;Meta-Annotation&#xff09;是指那些用于其他注解上的注解&…

React Native 之 开发环境搭建(一)

1. 安装Node.js&#xff1a; Node.js是React Native开发的基础&#xff0c;因此首先需要安装Node.js。强烈建议始终选择 Node 当前的 LTS &#xff08;长期维护&#xff09;版本&#xff0c;一般是偶数版本&#xff0c;不要选择偏实验性质的奇数版本。 如果你希望更方便地管理…

k8sCRD

k8s&&CRD 概念创建一个简单的自定义资源Operator 概念 CRD: CustomResourceDefinition&#xff0c;CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format <.spec.name>.<.spec.group&…

基于SpringBoot+微信小程序的订餐(点餐)配送系统设计与实现+毕业论文(12000字)

系统介绍 本微信小程序在线订餐系统管理员功能可以修改个人中心&#xff0c;用户管理&#xff0c;菜品分类管理&#xff0c;菜品信息管理&#xff0c;订单信息管理&#xff0c;取消订单管理&#xff0c;订单配送管理&#xff0c;菜品评价管理以及系统管理。微信小程序用户可以…

实训一:设计系统主页作业

1.题目 设计系统主页。 2.目的 (1)熟悉Web前端项目开发环境。 (2)掌握如何建立Web前端项目&#xff0c;学会规划项目结构。 (3)掌握动态生成页面内容的方法。 (4)理解如何使用Flash显示图片新闻。 (5)会在应用系统中编写播放动态新闻的程序。 3.内容 建立项目结构&#xff0c;并…

在excel的内置瀑布图模板中,能在数据标签里同时显示数值和百分比吗?

瀑布图是由麦肯锡顾问公司所创的图表类型&#xff0c;因为形似瀑布流水而称之为瀑布图( Waterfall Plot)。这种图表常用于表达数个特定数值之间的数量增减变化关系。 在Excel中&#xff0c;瀑布图是可以通过簇状柱形图来完成创建。从excel2016版起&#xff0c;excel添加了内置…