-
E - Round Numbers
- POJ - 3252
- 题意:Round Number 被称为其二进制形式中0的个数>=1的个数。求[x,y]区间内“Round Number”的个数.
- 初步想法正常数位dp进行搜缩搜到一个数时去getsum一下里面0,1数,但没想好如何记忆化,而且题目的要求按照十进制的数位进行 记忆化确实没有意义,这里他想要找的数字都是对二进制有要求所以直接按照二进制进行数位dp。dp数组三维分别代表数位0的个数1的个数 ,所以数位dp要根据题目的要求去进行搜索 。灵活多变。
-
#include<iostream> #include<stdio.h> #include<cstring> using namespace std; #define ll long long #define maxn 60 int a[maxn],dp[maxn][maxn][maxn]; ll l,r; ll dfs(int len,bool first,int num0,int num1,bool limit) { if(len==0)return num0>=num1; if(!limit&&dp[len][num0][num1]>=0) return dp[len][num0][num1]; ll ans=0; int up=(limit?a[len]:1); for(int i=0; i<=up; i++) { int t0=num0+1; int t1=num1+1; if(i==0) t0++; else t1++; if(first&&i==0) ans+=dfs(len-1,1,0,0,limit&&i==up); else ans+=dfs(len-1,0,t0,t1,limit&&i==up); } if(!limit) dp[len][num0][num1]=ans; return ans; } ll solve(ll num) { ll cnt=0; while(num) { a[++cnt]=num%2; num/=2; } return dfs(cnt,1,0,0,1); } int main() { memset(dp,-1,sizeof(dp)); scanf("%lld%lld",&l,&r); printf("%lld\n",solve(r)-solve(l-1)); return 0; }
相关推荐
AI训练加速30%!用numactl玩转多显卡绑核的隐藏技巧
本文深入探讨了如何利用Linux系统的numactl工具,通过精确的NUMA绑核策略优化多GPU AI训练性能。文章详细解析了NUMA架构对性能的影响,提供了从拓扑探查、命令实战到多卡脚本化部署的完整指南,并分享了性能验证与常见陷阱,帮助开发者实现高达30%的训练加速。
POJ - 3252二进制数位DP
给一个区间,让你求出区间内有多少个round numbers,所谓的round numbers就是二进制表示下,0的数量比1的数量多的数。 二进制数位DP,需要注意的地方: 1.前导0不算二进制表示下的0的数量,因此前面有1,后面的0才算数量。 2.数位DP的记忆化,必须要保证!limit或者limit,避免状态冲突! AC代码: #include <iostream> #include <cstring> using namespace std; #define ll long
HEVC/VVC中R-Lambda码率控制算法原理
文章目录1. 比特分配1.1 GOP级比特分配1.2 帧级比特分配1.3 LCU级比特分配2. 码率控制2.1 λ的计算和更新2.2 参数QP的确定 VVC中码率控制算法沿用了HEVC中经典的R-λ码率控制模型,R-λ由中科大的李斌博士提出(详情参考JCTVC-K0103)。R-λ模型的基础为视频编码中 R(比特 bpp)和 D(失真 MSE)之间的双曲线模型,即 D(R)=CR−KD(R) = ...
bzoj3209(二进制数位dp)
二进制数位dp,就是把原本的数字转化成二进制而以,原来是10进制,现在是二进制来做,没有想像的那么难 不知到自己怎么相出来的。。。感觉,如果没有一个明确的思路,就算做出来了,也并不能锻炼自己的能力,因为我现在需要训练的是做题的思维方法啊! sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,求sum(1)—sum(N) 的乘积。 首先,这道题直接做,
WPS JS宏智能识别代码段并设置样式(完整可用版)
之前,我们已经经历了多次迭代,解决了许多问题,比如识别代码块、处理多行导入、调整样式等。现在他们需要一份全面的文档来解释整个代码的结构和工作原理。(5)智能行分析(含URL和注解检测优化)function analyzeLineEnhanced(rawText,trimmedText,codeSymbols,codePatterns, singleLinePatterns)该解决方案在保持高性能的同时,提供了良好的可扩展性,能够适应不同组织的代码规范需求,是WPS生态中专业文档处理的创新实践。
Epicor ERP 界面新增客制化字段操作方法
我发现国内对于epicor这个erp软件的教程非常少,所以录制一些我实际遇到的需求,整理了实现过程,提供给大家参考。
二进制上的数位dpPOJ 3252
Round numberPOJ - 3252 题目大意:一个"round number" 数的定义是,将它转化成2进制后,0的个数大于等于1的个数,要求的就是在[s,f]范围内"round number"的个数 和之前的数位dp不同的是,这题是对二进制的数位进行dp,所以就存在着一个限制,前面有没有存在1,如果前面没有1.那么像00001,就是1,前面的0是不计数的,所以重点就在于考...
C# 与蓝牙 BLE 设备通信:基于 Windows.Devices.Bluetooth 实现手环/传感器数据读取
本文介绍了如何利用C#的Windows.Devices.Bluetooth命名空间实现与蓝牙BLE设备的通信。首先概述了BLE技术特性及其在物联网中的应用场景,包括智能穿戴设备和传感器。随后讲解了BLE的GATT协议架构,解析了服务(Service)和特性(Characteristic)的概念。文章重点展示了通过C#实现设备扫描、连接、数据读取的完整代码示例,并详细说明了如何使用通知(Notifications)功能实现实时数据更新。最后提供了订阅心率测量特性变化的实现代码,为开发者提供了完整的BLE设备通
BZOJ 3209 二进制数位DP
Description背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。 描述 话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积。Input
【AI黑话日日新】什么是AI Infra?
是支撑AI模型开发、训练、推理、部署与规模化运营的,是连接底层算力与上层AI应用的“数字基建”。没有高效的AI Infra,大模型训练、推理与落地都无法高效实现。
Cartographer实现双雷达建图
TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。
POJ 3252 Round Numbers(数位dp)
Round Numbers Time Limit:2000MS Memory Limit:65536K Total Submissions:17628 Accepted:7356 Description The cows, as you know, have no fingers or thumbs and thus are unable to ...
告别 Python!C# 直接跑 YOLO 目标检测:工控机边缘推理终极方案
set;set;set;set;set;stringget;set;get;set;get;set;get;set;get;set;告别 Python 依赖,不是排斥 Python 的训练能力,而是为了工程化的极致。在工控机这个资源受限、稳定性要求极高的战场上,是目前最优雅、最高效的解决方案。更少的依赖= 更少的故障点。更快的速度= 更高的产线节拍。更简单的部署= 更低的人力成本。现在,拿起你的 C# 项目,导入那个.onnx。
poj 3252 Round Numbers(二进制数位DP)
Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12505 Accepted: 4790 Description The cows, as you know, have no fingers or thumbs and thus
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
POJ 3252 - Round Numbers(二进制数位DP)
题目链接 https://cn.vjudge.net/problem/POJ-3252 【题意】 把一个整数写成二进制的形式,如果0的个数大于等于1的个数,那么就称这个数字是Round Number,输入两个整数L,R,问你区间 [L,R] 中有多少个数是Round Number(1<=L<=R<=2e9) 【思路】 把数字写成二进制进行数位DP,设 dp[pos][su...
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
Round Numbers(poj-3252,二进制数位dp)
The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' (also known as 'Rock, Paper, Scissors', 'Ro, Sham, Bo', and a host of other names) in order to make...
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
POJ.Round Numbers(数位详解)
入门数位第二题入门数位第二题入门数位第二题 Ⅰ.定义dp[i][j][k]位枚举到二进制第i位有j个0和k个1的合法情况(高位到低位)Ⅰ.定义dp[i][j][k]位枚举到二进制第i位有j个0和k个1的合法情况(高位到低位)Ⅰ.定义dp[i][j][k]位枚举到二进制第i位有j个0和k个1的合法情况(高位到低位) Ⅱ.分解数字时按照二进制分解,因为这里要处理的只是二进制的0和1Ⅱ.分解数字时按照二进制分解,因为这里要处理的只是二进制的0和1Ⅱ.分解数字时按照二进制分解,因为这里要处理的只是二进制的0和1 Ⅲ
POJ 3252 Round Numbers (二进制数位dp)
题意: 求[l,r]区间里满足转化成二进制后“0”个数比“1”多的数的个数求[l,r]区间里满足转化成二进制后“0”个数比“1”多的数的个数 分析: 破题想了2天,老想着填0→9,想了几个状态都没办法,都跟暴力没啥区别破题想了2天, 老想着填0\to 9, 想了几个状态都没办法, 都跟暴力没啥区别 瞄到二进制的时候−−尼玛原来这是个水题−−只要填0→1就好了瞄到二进制的时候 - - 尼
POJ 3252 Round Numbers
题目分析 找到2个给定的数之间二进制的表示中0比一大的个数。平时的数位dp用十进制进行分解,得到每一位的10进制数,这道题很明显按2进制进行分解就可以了,但是需要前导0要进行特别的判断,比如000101,前面的3个0很明显是不需要算进去的,在记忆化搜索是多加一个变量就可以了。 #include <cstdio> #include <cstring> #include <iostream> #in
Leetcode 338. 比特位计数 (二进制数位dp)
class Solution { public: vector<int> countBits(int num) { // dp[i]表示数字i的二进制数中1的个数 // dp[i] = dp[i>>1] + i&1 vector<int> dp(num+1); for(int i=1;i<=num;i++){ dp[i] = dp[i>&g...
[2020上海ICPC] C.Sum of Log(二进制数位DP)
题目链接:http://codeforces.com/gym/102900/problem/C 解题思路: ①i和j不能同时为0 ②要是公式有意义,i和j的二进制必须每一数位都不同或者都为0 ③log2(i+j)+1在满足条件②的情况下表示i和j中最大的二进制数位 使用数位DP对二进制进行处理,使用dp[pos][limit1][limit2]来记忆化搜索,分别表示位置、x是否达到上界、y是否达到上界 有两种数位DP处理方式 第一种:直接使用for循环来决定最高数位的情况 #define NO_SECUR
【NOIP2013模拟联考12】数数(数位dp||类欧几里得)
Description:ztxz16从小立志成为码农,因此一直对数的二进制表示很感兴趣。今天的数学课上,ztxz16学习了等差数列的相关知识。我们知道,一个等差数列可以用三个数A,B,N表示成如下形式:B + A, B + 2 * A, B + 3 * A, …, B + N * Aztxz16想知道对于一个给定的等差数列,把其中每一项用二进制表示后,一共有多少位是1,但他的智商太低无法算出此题,因
动态规划--数位dp--二进制状态压缩
和与或 给你一个数组R,包含N个元素,求有多少满足条件的序列A使得 0 ≤ A[i] ≤ R[i] A[0]+A[1]+...+A[N-1]=A[0] or A[1]... or A[N-1] 输出答案对1e9+9取模 输入描述: 第一行输入一个整数N (2 ≤ N ≤ 10) 第二行输入N个整数 R[i] (1 ≤ R[i] ≤ 1e18) 输出描述: 输出一个整数 示例1 输入 2 3 5 2 3 5 输出 15 15 示例2 输入 3 3 3 3 3 3 3
(转载)类欧几里得(知识点整理+板子总结)
思路来源 https://blog.youkuaiyun.com/wwx233/article/details/82431820 https://www.cnblogs.com/cyz666/p/7083213.html https://blog.youkuaiyun.com/qq_35649707/article/details/79169099(证明清楚详细) https://blog.youkuaiyun.com/wh...
第12届蓝桥国赛_二进制问题(数位dp)
第一次做数位dp,学完看第12届蓝桥,这不送分题 首先上一道刚学的入门数位dp(比蓝桥的都难一些????) 题目: 求给定区间 [X,Y][X,Y][X,Y] 中满足下列条件的整数个数:这个数恰好等于 KKK 个互不相等的 BBB 的整数次幂之和 范围:1≤X≤Y≤231−1,1≤K≤20,2≤B≤101≤X≤Y≤2^{31}−1,1≤K≤20,2≤B≤101≤X≤Y≤231−1,1≤K≤20,2≤B≤10 思路: 把数字 l,rl , rl,r 分解为BBB进制数 ,每位上的数字存入数组,然后从高位往低位
(蓝桥杯)二进制问题(数位DP)
这其实就是一道基础的数位DP题,如果对这方面知识有了解的同学可能就能直接做出来,如果不知道什么是数位DP的同学可以看这里:数位DP模板详解_AC__dream的博客-优快云博客 显然我们f数组中只需要存下当前位pos以及遍历到当前位有多少个1,由于这道题的结果是与0无关的,所以也就不需要考虑前导0了,直接当pos位变为0时返回就行了,如果遍历到最后一位当前1的个数是k个就返回1,否则返回0,在过程中如果出现1的次数大于k可以直接剪掉。 别的就没什么好说的了,下面是代码: #include&...
449



被折叠的 条评论
为什么被折叠?



