HRBUST - 2382 极难的问题 【数位dp + 二分】

求最长公共子序列长度(nlogn)【 包含了求最长上升子序列长度(nlogn)】 这里只说步骤吧,至于原理,可以自己百度找找; 假设两个序列   A,B,找两者的最长公共子序列; 第一步: 我们要去找出 A中所有与 B 相同的元素,这些元素在 B中的位置,各自为一个集合;比如 A = { a c f  d }  ,B = { c f g c a } , 则有  (从 i = 1 开始 )a ={ 5 } , c = { 1 ,4  } , f = { 2 }; a 这个元素... 阅读详情

题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2382

思路:

数位dp能够求出0到m区间内的符合某个条件的数字个数,在数位dp的条件下通过二分找出符合题意的那个数字

需要注意的是,题目的n虽然是int范围内的,但是n代表的是符合题意数字的个数,所有实际需要找的范围应该是大于int的,需要用longlong

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>

using namespace std;

typedef long long ll;

ll DIG[20], dp[15][15][5];

ll dfs (int cur, int last, int status, bool limit) {
    if (cur < 1) return status;
    if (!limit && dp[cur][last][status] != -1)
        return dp[cur][last][status];

    int End = limit ? DIG[cur] : 9;
    ll ret = 0;

    for (int i = 0; i <= End; ++i)
        ret += dfs (cur-1, i, status && (i != 4 && i != 7), limit && (i == End)); 

    if (!limit)
        dp[cur][last][status] = ret;
    return ret;
}

ll solve (ll x) {
    int m = 0;
    while (x) {
        DIG[++m] = x % 10;
        x /= 10;
    }
    return dfs (m, -1, 1, true)-1; 
}

int main (void)
{
	int t, n;
	scanf ("%d", &t);
	while (t--) {
        scanf ("%d", &n);
        memset (dp, -1, sizeof (dp));
        ll ans = 0, L = 0, R = 10000000000, mid;
        while (L < R) {
            mid = L+(R-L)/2;
            if (solve (mid) >= n) R = mid;  
            else L = mid+1;
        }
        printf ("%lld\n", R);
	}
	return 0;
 }

 

使用Java实现CRC16 MODBUS 格式校验 CRC16校验,测试如下 String str = "a5 98 03 00 00 5f c6 0f 7c 40 78 06 09 46 dc 6e db 00 16 3e 12 5c 98 00 19 98 0e 10 03 06 09 46 dc 6e db 03 0b bf 5f c6 0f 7c 43 bd b9 61 ee 96 76 99"; 校验规则: /** * CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结 阅读详情

相关推荐

Android 开发实战:从零到一集成 espeak-ng 实现中文离线 TTS(无需账号开箱即用)

本文详细介绍了如何在 Android 项目中集成 espeak-ng,实现中文离线语音播报。通过下载 so 库、编写 Java 接口、封装管理类,开发者可快速构建无需账号的 TTS 功能。文章覆盖从零到一的开发步骤、调试技巧及性能优化,适合中高级 Android 开发者参考。

全栈 3317

poj 2382 Apple Catching 入门dp

点击打开链接 #include #include using namespace std; const int M =1010; int dp[M][35]; // dp[i][j] 在i秒内swap j次最多获得的苹果 // 第i秒有两种 决策 要么swap要么停留在原地 //dp[i][j]= max(dp[i-1][j-1],dp[i-1][j]) int main()

Masamiiiiii 466

5个实战必备的多模态情感分析数据集(附下载链接与避坑指南)

本文精选了5个实战必备的多模态情感分析数据集,包括CMU-MOSEI、CH-SIMS、UR-FUNNY、MUStARD和IEMOCAP,并提供了详细的下载链接与避坑指南。文章重点介绍了如何高效获取、预处理这些数据集,并自然整合了多模态情感分析的核心热词,旨在帮助研究者和开发者快速启动项目,规避常见陷阱,聚焦模型创新。

yolo5detector的博客 280

POJ2382 Stars in Your Window AcWing 248. 窗内的星星(扫描线)

Description 在一个天空中有很多星星(看作平面直角坐标系),已知每颗星星的坐标和亮度(都是整数)。 求用宽为W、高为H的矩形窗户(W,H为正整数)能圈住的星星的亮度总和最大是多少。(矩形边界上的星星不算) Fleeting time does not blur my memory of you. Can it really be 4 years since I first saw you...

tomjobs的博客 905

安卓手机游戏《英雄迷宫冒险》存档修改

警告 修改前务必备份存档文件夹。该游戏有自动删除存档的功能,有问题的存档会自动删除。 修改对应的游戏版本为1.5。 存档保存位置 内部存储\Android\data\com.xmmf.yxmgmx.taptap\files 该文件夹中文件如下: data.wsf:数据文件。 wsfSave0:第一个存档。 wsfSave1:第二个存档。 修改金钱的例子 先进游戏确认当前金钱数量。当前金钱是2498,然后退出游戏。 根据金钱数量计算出存档中的内容。2498的十六进制是9C2,存档中的内容在存档中搜索该数

番茄鸡蛋的专栏 9360

CRaxsRat v7.6 安装与使用教程(附工具下载)

摘要:本文介绍远程管理工具CRaxsRat v7.6的合法应用与基本操作,强调仅限授权环境使用。该工具支持多客户端管理、TLS加密及文件/进程控制等功能,适用于内网维护与安全测试。安装需Windows 10/11系统及.NET 4.8,步骤包括解压运行、配置监听端口及生成客户端。文中提醒防火墙设置与杀软误报问题,并重申禁止非法用途,建议在虚拟机或隔离环境学习使用。

lzj781210的博客 3789

XMOJ 1519-二分+数位dp

这题二分不好想,但是前面数位dp统计个数其实是蛮经典的吧。。 用dp[pos][pre]代表当前处理到pos位置处,前面个位数的和为pre满足条件的最终数字的个数,当递推到pos==-1处时,看此时的pre即所有位数的结果之和是否等于s,等于的话返回dfs的结果就是1,最终结果就加上这个数,不然的话dfs结果就是0,solve函数也很好懂吧,从最高位一位一位向下推就行。设计好状态很关键。

crazy_石头的专栏 5185

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

MoorePlus的博客 4219

hrbust 2382(数位dp+二分)

极难的问题Time Limit: 1000 MSMemory Limit: 200000 KTotal Submit: 20(9 users)Total Accepted: 6(6 users)Rating: Special Judge: NoDescription那年一个菊苣问了asuka几个问题,把asuka花式吊打。asuka思考了一下,不能光我一个人被吊打啊,于是他决定把这个题出出来。如果...

1999 588

别再让 AI 瞎写 SAP 代码了!这套 Claude Code Skill 的验证机制才是关键

本文深入解析了专为SAP CAP开发设计的AI辅助工具sap-cap-capire的技术架构。该工具采用四层设计:协议层集成MCP和LSP实现实时模型访问与语法检查;智能层通过4个专业化Agent(数据建模、服务开发等)分工协作;验证层确保代码质量;知识层存储文档模板。这种工程化设计解决了通用AI在CAP开发中面临的上下文不足、专业性缺失和代码质量保证等核心问题,通过本地化服务和实时反馈机制显著提升了开发效率。

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

【MATLAB】STM32电机调速闭环控制工程

本文提出了一种基于MATLAB仿真与STM32实现的直流电机闭环PID调速控制方案。通过MATLAB建立电机数学模型并进行参数整定,仿真验证了增量式PID算法在启停、稳态和抗扰动方面的优越性能。基于STM32F103搭建了硬件系统,实现了编码器测速、定时中断控制、PWM输出等功能。实测表明,该系统转速超调<2%、稳态误差±2r/min,具备快速响应和强抗扰能力。相比开环控制,闭环调速显著提升了动态性能和稳态精度。方案提供了完整的仿真代码和嵌入式工程源码,可直接应用于智能小车、工业传动等场景,具有较高的

unber的博客 50

2020-09-08 数位DP+二分

#include <bits/stdc++.h> using namespace std; typedef long long ll; ll newx; ll fj[1005]={0}; ll dp[20][20]={0}; ll dfs(ll i,ll mod,ll isquery) { if(i==0) return mod==0; if(!isquery&&~dp[i][mod]) return dp[i][mod];

TimWcx的博客 258

Cesium 实现气象(温度,降水,风速)可视化详细代码实现

本教程介绍了使用Cesium实现气象数据可视化的方法,主要包括:1) 搭建Cesium开发环境;2) 三种核心气象要素的展示技术:温度热力图(基于颜色渐变和点密度)、降水区域填充(矩形着色)和风速风向(粒子系统);3) 数据集成方案,包括模拟数据生成和API对接;4) 高级功能如3D温度柱和时间序列动画;5) 性能优化策略,如数据聚合和LOD控制。教程提供了完整的代码示例,从基础配置到视觉效果实现,帮助开发者构建交互式气象可视化应用。

专注AI大模型,软件混淆,授权 1848

极难的问题(数位dp+二分)

极难的问题 Time Limit: 1000 MS Memory Limit: 200000 K Total Submit: 107(39 users) Total Accepted: 30(24 users) Rating: Special Judge: No Description 那年一个菊苣问了asuka几个问题,把asuka花式吊打。 asuka思考了一下,不能光我一个人被吊打啊,于是...

weixin_44040169的博客 285

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【POJ】3208Apocalypse Someday-数位dp+二分

Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 2198   Accepted: 1107 Description The number 666 is considered to be the occult “number of the beast” and is a well used ...

红点雷龙XL 261

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

POJ 刷题顺序

POJ从简到难(按照AC数目排序)的列表如下,作为小弱的刷题

thestoryofsnow的专栏 31万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

UVA 11134 Fabled Rooks 【贪心+问题分解】

题目链接:https://cn.vjudge.net/problem/UVA-11134; 题意: 在一个n*n的棋盘中放置 n个棋子,每个棋子有固定的放置范围,在满足放置范围的情况下,放置的棋子横向和纵向不能有第二个棋子;输出棋子的放置位置或者 impossible; 思路: 解这题的关键就是问题的分解,如果能想到问题的分解方法的话,就比较容易做了;因为之前也做过类似这种方格的题目,想到...

Y390d的博客 278

poj 1742 Coins 【多重背包+二进制拆分优化】

  Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3969    Accepted Submission(s): 1578   Problem Description Whuacmers use coins.They...

Y390d的博客 3046

Codeforces Round #523 (Div. 2) C. Multiplicity 【dp】

题目链接:http://codeforces.com/contest/1061/problem/C 思路: 像类似这种求有衔接关系的数列要第一时间想到  dp[ i ] = dp[ i ] + dp[ i - 1 ] 这种状态的dp,为什么? 假设我要让一个原数组下标为 4的数变成下标为 3 的数,那么要想数列存在,那么 必须存在 至少一个 长度为2的数列,在这些数列的尾部加上这个原数组下标...

Y390d的博客 612

POJ 2576 Tug of War 【二维01背包】

  Tug of War Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 9236   Accepted: 2572 Description A tug of war is to be arranged at the local office picnic. For the tug of...

Y390d的博客 559

最大连续子序列 【递推(dp)】

    给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...,  Nj },其中 1 &lt;= i &lt;= j &lt;= K。最大连续子序列是所有连续子序列中元素和最大的一个,  例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和  为20。  在今年的数据...

Y390d的博客 386

HDU - 2546 饭卡 【01背包+排序】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 题目问的是最小容量,而且容量可能会负数,我们可以换个角度解决问题,比如题目允许的容量是 5~m,我们可以把容量设置成 m~2*m-5,这样做的好处是能把可能为负数的结果变成正数,那么就可以用01背包求解问题(dp[容量]),求的是最大值。 另外需要给价格排序,比如下面这个两个数据,自己可以...

Y390d的博客 350

POJ 2018 【二分答案+dp求最大区间段】

题目链接:http://poj.org/problem?id=2018 从0到2000000(2000*1000) 枚举平均值,让数组统一减去枚举的平均值,如果存在区间和大于等于0的,就说明答案是成立的。 关键是如果求最大的区间和。 假设不限制区间的长度,求某一个数组的最大区间和应该怎么求? 如果dp[i]表示的是某左界到右界 i 的最大区间和,那么dp[i+1] 应该如果求? 因为要求...

Y390d的博客 347

Educational Codeforces Round 59 (Rated for Div. 2) D Compression 【dp】

题目链接:http://codeforces.com/contest/1107/problem/D 这道题只要把主要问题找出来就有思路了。 题目的矩阵是 n*n的,要想压缩成 n/x *n/x 的矩阵需要满足一个条件,假设x == 2,那么这个矩阵将会被分成4小块矩阵,如果这四个小矩阵每一块要么全是1要么全是0,那这个矩阵就能压缩成n/2 *n/2的矩阵。 因为题目给的n比较大,如果暴力求小...

Y390d的博客 338

HDU 1114 Piggy-Bank 【完全背包(时间优化)】

    Problem Description Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM)...

Y390d的博客 300

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C 【暴力枚举+dp】

题目链接:http://codeforces.com/contest/1060/problem/C 思路: 一些暴力看起来会超时的题目还是有必要尝试一下的 ; 题目的意思可以转换成:求两个数组的区间和的最大长度和,并且两个区间和的乘积小于等于x 给出的数组只有2000个,求出所有区间和的时间复杂度大概是4*10^6,求两个数组的区间和就只是多一个常数; 假设一个数组的某个区间和是 n,只需...

Y390d的博客 264
上一篇: POJ 1006 Biorhythms 【中国剩余定理】
下一篇: 数位dp模板
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值