HDU3555 Bomb(数位dp)

[HDU 3555] Bomb [数位DP] Source 2010 ACM-ICPC Multi-University Training Contest(12) http://acm.hdu.edu.cn/showproblem.php?pid=3555#include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #def 阅读详情

Problem Description
The counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the time bomb. The number sequence of the time bomb counts from 1 to N. If the current number sequence includes the sub-sequence "49", the power of the blast would add one point.
Now the counter-terrorist knows the number N. They want to know the final points of the power. Can you help them?
 

Input
The first line of input consists of an integer T (1 <= T <= 10000), indicating the number of test cases. For each test case, there will be an integer N (1 <= N <= 2^63-1) as the description.

The input terminates by end of file marker.
 

Output
For each test case, output an integer indicating the final points of the power.
 

Sample Input
3 1 50 500
 

Sample Output
0 1 15

题意:计算一个数内含连续数49的个数


思路

    :和上一篇博客题意相近,同理可解,数据很大,要用__int64



#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>


#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
typedef __int64 ll;

#define fre(i,a,b)  for(i = a; i < b; i++)
#define mem(t, v)   memset ((t) , v, sizeof(t))
#define sf(n)       scanf("%d", &n)
#define sff(a,b)    scanf("%d%d", &a, &b)
#define sfff(a,b,c) scanf("%d%d%d", &a, &b, &c)
#define pf          printf
#define bug         pf("Hi\n")

using namespace std;

#define INF 0x3f3f3f3f
#define N 22

ll dp[N][3];

//dp[i][0] 没有不吉利
//dp[i][1] 没有不吉利 首位 为 9
//dp[i][2] 有不吉利

void inint()
{
	dp[0][0]=1;
	ll i;

	for(i=1;i<N;i++)
	{
		dp[i][0]=dp[i-1][0]*10-dp[i-1][1];

		dp[i][1]=dp[i-1][0];

		dp[i][2]=dp[i-1][2]*10+dp[i-1][1];
	}
}

void solve(ll x)
{
	ll i,len=0,bit[N];

	while(x)
	{
		bit[++len]=x%10;
		x=x/10;
	}

	bit[len+1]=0;

	ll ans=0;

	bool flag=false;

	for(i=len;i>=1;i--)
	{

		ans+=bit[i]*dp[i-1][2];

		if(flag)
			ans+=bit[i]*dp[i-1][0];

		if(flag)  continue;

		if(bit[i]>4)
			ans+=dp[i-1][1];

		if(bit[i+1]==4&&bit[i]==9)
			flag=true;

	}

	printf("%I64d\n",ans);
}

int main()
{
	int t;
	ll le;
	inint();
	sf(t);
	while(t--)
	{
		scanf("%I64d",&le) ;
		solve(le+1);
	}
	return 0;
}







YF-S401水流量传感器在STM32上的精准计量实现 本文详细介绍了YF-S401水流量传感器与STM32微控制器的集成应用,实现精准水流计量。通过外部中断和外部时钟两种脉冲计数方案,结合硬件配置、软件滤波和校准技巧,确保高精度流量测量。适用于智能家居和工业自动化中的水控系统,提升系统稳定性和测量准确性。 阅读详情

相关推荐

华为云Stack应急预案实战:从IaaS到PaaS的故障场景与恢复指南

本文详细解析华为云Stack应急预案在IaaS到PaaS层的故障场景与恢复实践,涵盖计算节点故障、存储链路中断等典型问题。通过标准化操作流程和实战案例,帮助企业在突发故障时快速恢复业务,确保高可用性。华为云Stack的应急预案体系经过金融、政务等严苛场景验证,恢复时间指标(RTO)控制在30分钟以内。

weixin_33724059的博客 373

HDU 3555 Bomb(数位DP)

HDU 3555 Bomb(数位DP) ACM 题目地址:HDU 3555 题意:  问(0, n]里面有几个数有'49'这个子串。 分析:  裸数位DP。  直接用DFS做。  就是输入输出比较坑,杭电貌似都要用__int64。 代码: /* * Author: illuz * File: 3555.cpp * Cr

水果君の日常 4654

Dify 1.0+内网部署全攻略:模型插件离线安装与信创环境适配

本文详细介绍了Dify 1.0+版本在内网环境中的部署全攻略,重点解析了模型工具插件的离线安装方法与信创环境适配技巧。通过实战经验分享,帮助企业在严格的内网隔离条件下高效部署AI平台,解决插件依赖和安装难题,提升大语言模型的应用效率。

weixin_29224529的博客 274

(数位dp)HDU3555 Bomb

HDU3555 Bomb 题意&思路: 给个n,计算1~n中子串含有“49”的数。 对于这种求一个区间内含有某种特征的数,一般用数位dp。数位dp就是数字的位上dp,例如这题给的范围是到263-1约等于1019,如果枚举遍历判断的话,肯定会T。如果是数位的话,就只要枚举19位的情况。 听起来是不是感觉很简单 实在是太难了,看了好多大佬的题解和分析才懂了一点点。 数位dp借助于dfs和记忆...

Z7784562的博客 257

ADS与MATLAB数据互通全指南:从Snp文件导入到TXT导出完整流程

本文详细介绍了在射频与微波工程中,实现ADS与MATLAB高效数据互通的完整流程。核心内容包括利用SPOutput控件、数据显示窗口及测量方程等多种方法,将ADS仿真数据(如S参数)导出为Touchstone或TXT格式,并导入MATLAB进行深度分析与可视化;同时指导如何将MATLAB处理后的数据回灌至ADS,用于模型验证与协同仿真,旨在构建自动化、无损的数据交换工作流,提升工程师的工作效率。

pluto的博客 393

hwasan / asan详细分析踩内存之一:Use after free

UAF漏洞全称为use after free ,即利用已经被free掉的堆块被再次利用,该漏洞的存在是因为程序编写者在free堆块部分没有将该堆块的fd指针改为0,进而导致该堆块可以被申请回来,3.内存块被free后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。2.堆块free后,对应指针没有被设置为NULL,即还可以调用会该堆块,当我们申请一个比该堆块小于等于的size时。

1398

数位DP入门之hdu 3555 Bomb

数位DP入门之hdu 3555 Bomb 题意: 在1~N(1<=N<=2^63-1)范围内找出含有’49’的数的个数; 与hdu 2089 不要62的区别:2089是找不不含’4’和’62’的区间范围内的数,此题是含有;正好相反,对于 “不要62”只是用第二位表示首位数字,这一题呢? 看转化:易知一定要要知道首位是9的个数,才能在前面加4得到’49’,但是什么状态能从不含’49’转移到含’49

hxer 619

在 SAP S/4HANA 本地部署和私有云里预览 RAP Travel App:为什么 ADT 发不出去,以及如何用 /IWFND/V4_ADMIN 正确发布 OData V4 Service

在SAP S/4HANA On-Premise/Private Cloud环境中,通过ADT直接发布RAP服务的本地端点常会失效。这是因为系统治理策略要求必须通过SAP Gateway Foundation(事务码/IWFND/V4_ADMIN)发布Service Group,而非开发者本机测试模式。本文详解了该流程的必要性:Service Group是OData V4服务的发布单元,涉及后端登记(/IWBEP/V4_ADMIN)和前端发布(/IWFND/V4_ADMIN)两个环节。提供了从ADT跳转SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 269

【HDU】3555 Bomb 数位DP

传送门:【HDU】3555 Bomb 题目分析:shu

poursoul 817

【2025华为OD机考真题】- 简易内存池(B卷-200分)(C版)

🔔本文收录于「最新最全华为OD机试真题(C版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅

**My Coding Family** 962

ML307R OpenCPU TCP使用

实现现象 平台下发数据,板子在收到数据之后,马上再发送到平台,通过串口助手可以看到已经接收到数据。ML307R TCP 是使用LWIP的标准的socket通信,具体TCP流程可以自行百度。实验目的:实现把接收的数据再发送到服务端。因为是4G,所以必须用外网的。

面朝大海春暖花开 2232

HDU-3555-Bomb【数位dp】

HDU-3555-Bomb【数位dp】

Linoy 1066

【WRF-Chem教程-附录 C】闪电-NOx 参数化方案详解

闪电-NOx 参数化方案详解

WW、forever的博客 974

HDU3555 Bomb —— 数位DP

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 18739    Accepted Submissi

A man can be destroyed, but not defeated. 543

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HDU3555 Bomb【数位DP+记忆化搜索】

Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 23077    Accepted Submission(s): 8683   Problem Description The counter-terrorists fou...

海岛Blog 707

HDU 3555 Bomb(数位dp)

题目链接:HDU 3555 Bomb

fobdddf的专栏 581

HDU3555 Bomb[数位DP]

B - Bomb  HDU - 3555  题解: 只要记录下三个状态,0号状态代表前面没有4,也没有49,1号状态代表前一位是4,那么只要当前位是9,就可以直接把状态转成2号状态,即当前的数已经存在49后面的数可以任意枚举。 #pragma comment(linker, "/STACK:102400000,1024

ControlBear的博客 424

HDU3555 Bomb【数位DP】

题目链接:HDU3555 Bomb 题意:问1~n中含有49的个数; 分析:首先用init()找到n位数有多少含有49的数; dp[i[[j]用于存储符合条件的数的个数 i代表目前处理的数长度为i;这里dp[i][j]处理的数可包含前导零; dp[i][0]代表长度为i的数中不含49数的数量; dp[i][1]代表长度为i的数中不含49但是最高位为9的数的数量; dp[i][2]代表长...

MaJorieL 159

HDU 3555 Bomb (数位DP)

原题地址:传送门    (http://acm.hdu.edu.cn/showproblem.php?pid=3555) Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 13836    Accepted S

Lulu11235813的博客 833

HDU 3555 Bomb(数位DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555BombTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 16312 Accepted Submission(s): 5961Pr

linlinsong—ACM界蒟水! 330

【数位DP】Bomb HDU3555

Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 3206    Accepted Submission(s): 1141 Problem Description The counter-terrorists f

Jiangzh_MZOI 689

hdu3555 Bomb 【数位dp+记忆化dfs】

题目链接:hdu3555 Bomb题意: t组样例,给正整数n(n<=263−1)(n<=2^{63}-1),输出[1, n]中包含”49”的数的个数。数位dp第一发; dp预处理出[0,10],[0,100]...[0,1020][0,10],[0,100]...[0,10^{20}] 的答案,根据n每位的值按情况累加即可; 注意n包括49的情况, 例如n=234950这种情况, 49之后不

lh的博客 584

HDU 3555 Bomb【数位DP】

BombBombBomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 26150 Accepted Submission(s): 9915 Problem Description The counter-terrori...

qq_43710979的博客 162

【HDU 3555】 Bomb 数位dp

Problem Description The counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the time bomb. The number sequence of the time bomb counts from 1 to N. If the current...

待到山花烂漫时 266

HDU-3555 Bomb (数位DP)

数位DP入门题 设dp[i][0]表示长度为i,不含49的数字个数;dp[i][1]表示长度为i,不含49且最高位为9的数字个数;dp[i][2]表示长度为i,含有49的数字个数 不是很明白为什么第二维状态要这样取...

idealism_xxm的专栏 1228
上一篇: hdu 2089 不要62(数位dp)
下一篇: POJ 3258 River Hopscotch(二分 跳河)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值