F(x) HDU - 4734 (数位dp)

DCDC系列(一): COT DCDC基本原理 电流环DCDC属于双环控制模式,根据电流检测的位置,分为峰值电流环控制模式、谷值电流环控制模式和平均电流环控制模式,主要由输出电压反馈环和电流环两个环路来实现控制,其瞬态响应比电压环更好,且有自动限流的功能,但仍需要斜坡补偿网络,且对噪声敏感。Stage3: 在下管NMOS打开阶段,由于后级负载此时间段内消耗的电量较少,所以VFB还未低至Vref,所以此阶段中,上管PMOS和下管NMOS均处于关断状态,此时的电感电流为0mA,此阶段测的VSW上的电压就是Cout上的电压VREG; 阅读详情

F(x)

HDU - 4734

For a decimal number x with n digits (A nA n-1A n-2 ... A 2A 1), we define its weight as F(x) = A n * 2 n-1 + A n-1 * 2 n-2 + ... + A 2 * 2 + A 1 * 1. Now you are given two numbers A and B, please calculate how many numbers are there between 0 and B, inclusive, whose weight is no more than F(A).

Input
The first line has a number T (T <= 10000) , indicating the number of test cases.
For each test case, there are two numbers A and B (0 <= A,B < 10 9)
Output
For every case,you should output "Case #t: " at first, without quotes. The t is the case number starting from 1. Then output the answer.
Sample Input
3
0 100
1 10
5 100
Sample Output
Case #1: 1
Case #2: 2
Case #3: 13
题目给了个f(x)的定义:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,Ai是十进制数位,然后给出a,b求区间[0,b]内满足f(i)<=f(a)的i的个数。
常规想:这个f(x)计算就和数位计算是一样的,就是加了权值,所以dp[pos][sum],这状态是基本的。a是题目给定的,f(a)是变化的不过f(a)最大好像是4600的样子。如果要memset优化就要加一维存f(a)的不同取值,那就是dp[10][4600][4600],这显然不合法。
这个时候就要用减法了,dp[pos][sum],sum不是存当前枚举的数的前缀和(加权的),而是枚举到当前pos位,后面还需要凑sum的权值和的个数,
也就是说初始的是时候sum是f(a),枚举一位就减去这一位在计算f(i)的权值,那么最后枚举完所有位 sum>=0时就是满足的,后面的位数凑足sum位就可以了。
仔细想想这个状态是与f(a)无关的(新手似乎很难理解),一个状态只有在sum>=0时才满足,如果我们按常规的思想求f(i)的话,那么最后sum>=f(a)才是满足的条件。
code:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 1e4+5;
int dp[12][N];
int f(int x){
    if(x == 0)return 0;
    int ans = f(x/10);
    return ans*2+(x%10);
}
int all;
int a[12];
int dfs(int pos,int sum,int limit){
    if(pos == -1) return sum<=all;
    if(sum > all) return 0;
    if(!limit && dp[pos][all-sum]!=-1) return dp[pos][all-sum];
    int up = limit ? a[pos] : 9;
    int ans = 0;
    int i;
    for(i = 0; i <= up; i++){
        ans += dfs(pos-1,sum+i*(1<<pos),limit&&i==a[pos]);
    }
    if(!limit) dp[pos][all-sum] = ans;
    return ans;
}
int solve(int x){
    int pos = 0;
    while(x){
        a[pos++] = x%10;
        x /= 10;
    }
    return dfs(pos-1,0,true);
}
int main(){
    int a,b;
    int t;
    int cas = 0;
    scanf("%d",&t);
    memset(dp,-1,sizeof(dp));
    while(t--){
        scanf("%d%d",&a,&b);
        all = f(a);
        printf("Case #%d: %d\n",++cas,solve(b));
    }
    return 0;
}


实践指南——【SPSS操作解析】线性混合效应模型在重复测量数据中的应用 本文详细解析了线性混合效应模型在重复测量数据分析中的应用,并提供了SPSS操作指南。文章阐述了该模型如何通过区分固定效应与随机效应,有效处理数据非独立性和缺失值问题,从而获得更可靠的统计推断。 阅读详情

相关推荐

解决Unity打包后粒子特效显示不全的问题

粒子特效在Editor下显示没有问题,但打包后出现部分粒子特效里的Mesh没有显示。

agoo_indie的博客 4381

HDU - 4734(数位DP)

题解:用一维表示位数二维表示到达该位数差x多少然后就是数位DP模板加上记忆化搜索,转移方程下面看一下代码就明白了#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int dp[20][26000]; int bit[20]; int n,m,x; int dfs

Soul 326

不刷机!Jetson AGX Orin无损更新内核与设备树的两种安全方法(附备份恢复脚本)

本文详细介绍了Jetson AGX Orin在不刷机的情况下安全更新内核与设备树的两种方法,包括extlinux.conf动态加载和分区精准刷新方案。通过备份恢复脚本和工业级灾备方案,确保零数据丢失,适用于边缘AI和机器人等关键场景。

weixin_40192258的博客 307

HDU-4734 数位DP

听了学长的讲解,这题用数位Dp #include #include #include typedef __int64 LL; using namespace std ; int Pow[11],len; LL dp[11][5050],A; char B[11]; LL dfs(int pos,int res,int full) { if(res<0) return 0;

ZXLS-ZMR的专栏 735

Oracle Primavera P6实战手册:从入门到精通的企业项目管理秘籍

本文详细介绍了Oracle Primavera P6在企业项目管理中的实战应用,从环境配置到高级进度控制技巧,帮助用户从入门到精通。通过WBS设计、资源优化和情景模拟等核心功能,提升项目管理效率。特别适合需要处理复杂项目和多团队协作的企业用户。

weixin_29235923的博客 252

MT25QL256完整操作指南:从ID读取到4KB扇区擦除(附华大SPI例程)

本文提供了MT25QL256 NOR FLASH在华大MCU上的完整驱动开发指南。内容涵盖从SPI初始化、器件ID读取、状态寄存器查询,到核心的页编程和4KB扇区擦除操作,并分享了构建健壮驱动框架、处理跨页写入及常见调试问题的实战经验。

tt34567的博客 886

F(x) HDU - 4734 数位dp

题目链接:https://vjudge.net/problem/HDU-4734 转自:https://blog.youkuaiyun.com/sunyutian1998/article/details/78733904 题意:输入a,b,给出f(x),求0~b中有多少数的f(x)值小于等于f(a)。 思路:f(a)记为num。为了不tle,不能每次都初始化dp数组。 dp【i】【j】表示到第i位,num减去...

A 200

深入解析Buck开关电源中的死区时间设计及其对系统性能的影响

本文深入解析了Buck开关电源中死区时间的设计原理及其对系统性能的关键影响。死区时间通过防止上下管同时导通来避免穿通电流,确保系统安全。文章详细探讨了其工作机制、设置时的效率与安全权衡,以及不当设置对效率、稳定性和EMI的连锁反应,并提供了基于实测的调试方法与实战案例。

Apple的专栏 1129

hdu4734——数位dp(减去的艺术)

题目链接:https://vjudge.net/problem/HDU-4734 题目大意:求区间[l,r]内满足数x的F(x)<=F(a)的数的个数。 对于一个n位的数(AnAn-1An-2....A1),F(x)=An*2^(n-1)+An-1*2^(n-2)+...+A1*1. 题解: 首先我们肯定要维护一个状态sum表示前pos位数的F(x)值,最后判断一下是否大于F(...

mumei的博客 325

Lammps实现甲烷与水的竞争吸附-循环不同气体分子

Lammps实现甲烷与水的竞争吸附

Rockyoung 5373

Python全栈入门到实战【JavaScript篇 15】async/await与Fetch API,打通前后端数据通道

Fetch API是浏览器内置的现代HTTP请求接口,用于向服务器发送请求并获取响应。它是(XHR)的替代品。学习Fetch的目标非常明确——用JS从后端API获取数据,并渲染到前端页面。这标志着前后端数据通道的打通,是实现全栈开发的核心技能。try {// 等待Promiseconst parallel = await Promise.all([ // 并行等待]);

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1978

HDU 4734 浅谈数位动态规划进阶

世界真的很大 一下午就耗在这个数位DP上了 全怪原来讲的时候没有认真听。。 然后稍微研究了一下,比起上一道水题稍微有一点进阶了吧? 大概,,, 这道题涉及的是关乎于记忆化数组状态的设计,为了方便储存答案看题先:description:题目给了个f(x)的定义:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,Ai是十进制数位,然后

BerryKanry的博客 731

最强游戏投屏串流搭档Sunshine+Moonlight配置方法

因祸得福的是,sunshine作为开源的self-host的服务端,不仅可以代替Novidia的服务端角色,还拓展了moonlight可以服务的主机,非novidia显卡的PC也可以通过这对搭档实现高质量的游戏窜流投屏了。回到moonlight,点击电脑图表,会给你一个Pincode,到Sunshine控制台,菜单点击Pin,输入moonlight给出的pin码。高质量的图像: Moonlight支持高清(HD)和甚至4K分辨率的投屏,同时还提供了对音频的传输支持,确保用户可以享受到高质量的视频和音频。

每日出拳老爷子的博客 1万+

(数位dp)HDU4734 F(x)

HDU4734 F(x) 题意&思路: f(x)的定义是,对于十进制数的每位(anan-1……a1),f(a)=an*2n-1+an-1*2n-2+……+a1*20。给你a和b,求在f(x)<=f(a),x∈[0,b]的个数。 又是数位dp,依旧没有思路。看了大佬的思路,惊为天人。 用dp[i][j]表示第i位,j是后面要凑的权值和。 需要的f(a)和你现在的总权值的差值,就是你在接...

Z7784562的博客 287

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【HDU】4734 F(x) 数位DP

传送门:【HDU】4734 F(x)

poursoul 622

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【数位DP(Sub)】HDU 4734 F(x)

HDU 4734 F(x) 思路: dfs里的cnt指的是当前pos位,高位还需要凑cnt的价值和。 例如211。第2位2,对应的cnt = 0 第1位1,对应的cnt = 0 + 2*(1 << 2) = 8 第0位1,对应的cnt = 8 + 1*(1 << 1) = 10 第-1位,对应的cnt = 10 + 1*(1 << 0) = 11 拿第-1位来...

L_X_ 247

[HDU - 4734] F(x) (数位dp)

[HDU - 4734] F(x) 题目链接 大致题意: f(x) = a(n)*2(n-1)+a(n-1)*2(n-2)+…a(2)*21+a(1)*20,( a(i)表示十进制数x中第i位的数字 ) 给出a,b,求出0~b有多少个不大于f(a)的数 解题思路: 首先先计算出f(a)的值 然后将f(a)的值作为初始值,每次递归减去每一位对应的数值,只要递归到最低位时sum>=0,说明满足条件,累加结果 AC代码: #include <bits/stdc++.h> using n

qq_49494204的博客 216

hdu 4734 F(x)(数位dp)

题目链接:hdu 4734 F(x) 题目大意:给定f(x)的计算公式,现在给出n和m,求有多少个x,x 解题思路:数位dp,dp[i][j]表示到第10i内,然后f值为j的总数。 #include #include #include using namespace std; const int maxn = 10000; int n, bit[15]; int dp[1

不慌不忙、不急不躁 961

【数位DP】F(x) HDU - 4734

Think: 1知识点:数位DP 2题意:输入A,B,询问在[0, B]区间内,F(xi) <= F(A)的数的数量,其中F(x)的定义为:F(x) = An * 2^n-1 + An-1 * 2^n-2 + … + A2 * 2 + A1 * 1,其中数字x的n个数位为 (AnAn-1An-2 … A2A1) 3方法:分离B的数位作为约束条件,然后计算得到F(A),进而从F(A)的最高位开始

BlessingXRY的博客 425

hdu_4734_F(x)(数位DP水)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 题意:给你一个F(x)的定义,然后给你a,b,问你在0到b包括b有多少个数满足F(x)<=F(a) 题解:dp[i][j]为dp到第i位的和为j的方案 1 #include<cstdio> 2 #include<cstring> 3 #def...

weixin_30411997的博客 133

[数位DP] HDU4734 F(x)

HDU4734 题意:设整数x的十进制表示为An*10^n-1 + An-1*10^n-2 ... A1*10^0, 定义函数F(x)=An*2^n-1 + An-1*2^n-2 +...+A1*10^0,然后对任意x∈[0, B]求F(x)值不超过F(A)的x的个数。 解法:数位DP。 DP[i][j]表示1~i位的数中F函数值不超过j的数的个数,DP[len][F(A)]即为答案。 技巧

穹妹的家 429

HDU-4734 F(x)数位dp

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 大致意思就是每次询问【0,b】区间有多少数的f(i) <= f(a) 这题有一个巧妙的状态定义方式:dp[pos][sum]表示枚举到第pos位,【还需要】sum才能达到f(a) 1e9的数据范围,sum不超过5000。最后只要sum >= 0就表示不超过f(a) ...

aoy29758的博客 264

[HDU 4734]F(x)[数位DP]

题意: 将一个十进制数 n = dn dn-1 ... d0 视为二进制. 即 F(n) = dn*2^n + ... + d0*2^0. 给出A, B. 求0 ... B之间, 该值不大于F(A)的数的个数. 思路: 数位DP. 数位DP的优点在于, 你不需要知道这个答案是怎么来的, 只需要知道递推式. 这个答案的生成过程就在递推的过程中. dp [ i ] [

以中有足乐者... 2562

hdu 4734 F(x) 数位dp

题意:定义 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1(其中 x = AnAn-1An-2 ... A2A1),那么给定A,B,求[0,B]区间的i,满足F(i) 的个数。 思路:设dp[ pos ] [ k ]为当前考虑pos位,之后(pos + 1)位与之前的位数组合形成的F函数值不超过k的数的个数,详见代码:

AC_kereo的专栏 2005

【数位DP】 HDU 4734 F(x)

原题直通车: HDU 4734 F(x) 题意:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1, 求0.....B中F[x]&lt;=F[A]的个数。 代码:   // 31MS 548K 931 B G++ #include&lt;iostream&gt; #include&lt;cstdio&gt; #include...

weixin_34200628的博客 85

简单数位dp-hdu-4734-F(x)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4734 题目大意: 给一个数A (十进制表示形式为AnAn-1An-2 ... A2A1,定义函数 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,给一个B,求B以内的i,满足F(i) 解题思路: 很裸的数位d

cc_again的专栏 2544

hdu 4734 F(x) 数位dp

题意: 问 0到b 之间有多少x符合 F(x)<=F(a) 做法: 数位dp 之前想到的状态,第二维sum 代表 这位之前 二进制数 加和是 sum, 这位及之后 有多少种数 二进制加和 + sum<=F(a) 然后超时了一发,加了个999的剪枝,200ms 过了。原因是里的dp意义和F(a)有关,所以每次要清空数组 后来看了别人的,发现原来很简单,正确的状态 sum 表示 这位及之后 有多少种数 二进制 加和<=sum 这里的dp值是固定的,每次不用清空,所以速度快很多。

万事屋 608
上一篇: 不要62 HDU - 2089(数位dp)
下一篇: Play a game (博弈论)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值