首页 > 编程语言 >算法随笔——数位DP

算法随笔——数位DP

时间:2024-06-01 10:55:15浏览次数:27  
标签:pre int pos st limit 随笔 DP 数位

学习链接 https://www.luogu.com/article/tzeo544s

数位DP标准模版:

ll dfs(int pos,int pre,int st,……,int lead,int limit)//记搜
{
	if(pos>len) return st;//剪枝
	if((dp[pos][pre][st]……[……]!=-1&&(!limit)&&(!lead))) return dp[pos][pre][st]……[……];//记录当前值
	ll ret=0;//暂时记录当前方案数
	int res=limit?a[len-pos+1]:9;//res当前位能取到的最大值
	for(int i=0;i<=res;i++)
	{
        //有前导0并且当前位也是前导0
		if((!i)&&lead) ret+=dfs(……,……,……,i==res&&limit);
        //有前导0但当前位不是前导0,当前位就是最高位
		else if(i&&lead) ret+=dfs(……,……,……,i==res&&limit); 
		else if(根据题意而定的判断) ret+=dfs(……,……,……,i==res&&limit);
	}
	if(!limit&&!lead) dp[pos][pre][st]……[……]=ret;//当前状态方案数记录
	return ret;
}
ll part(ll x)//把数按位拆分
{
	len=0;
	while(x) a[++len]=x%10,x/=10;
	memset(dp,-1,sizeof dp);//初始化-1(因为有可能某些情况下的方案数是0)
	return dfs(……,……,……,……);//进入记搜
}
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%lld%lld",&l,&r);
	    if(l) printf("%lld",part(r)-part(l-1));//[l,r](l!=0)
	    else printf("%lld",part(r)-part(l));//从0开始要特判
	}
	return 0;
}

标签:pre,int,pos,st,limit,随笔,DP,数位
From: https://www.cnblogs.com/codwarm/p/18170637

相关文章

  • 算法随笔——状压DP题目整理
    枚举状态S的子集:for(ints=0;s<=tot;s++){ for(ints2=s;;s2=s&(s2-1)){枚举子集例题旅行商问题:P8733[蓝桥杯2020国C]补给在方格中填图案问题:蒙德里安问题国际象棋炮兵阵地......
  • 状压DP
    状压DP[SCOI2005]互不侵犯点击查看题面题目描述在\(N\timesN\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共\(8\)个格子。输入格式只有一行,包含两个数\(N,K\)。输出格式......
  • DP笔记
    DP笔记目录DP笔记一、动态规划总结二、线性DP三、背包问题四、区间DP五、树形DP换根DP(也算是树形的DP)六、状压DP七、数位DP八、概率DP、期望DP一、动态规划总结要使用动态规划需要哪些条件?最优子结构子问题重叠无后效性1和2中只需要满足一个,再加上3,接下来就可以愉快......
  • 随笔,这学期最后一天的算法学习
    最近没写什么笔记,并不是因为懒了。而是和我上一次大片时间咕了笔记一样:备战蓝桥杯。这种时候我一般都会力扣上刷刷题:距今为止,力扣一共刷了142道题,一大半的中等题和一部分简单题以及一点点困难题。在备战的最后一天,我又通过历年卷(其实只有去年)学习了快速幂求逆元,最小生成树以及单......
  • udp的收发包的思考
      在测试radius性能时,想到一个问题,以前tcp报文在ip层处理时,涉及到路由查找,对于tcp协议报文;skb中没有路由缓存,没有关联的sock;且非分片报文;ip_early_demux设置为true;则调用early_demux函数提前在IP层做established状态的sock查找,并负责将sock结构体成员sk_rx_dst的路由缓存赋值......
  • 【游戏设计随笔08】茶杯头游戏中的BOSS是如何干掉你的?
    茶杯头中的boss往往体型巨大,boss攻击的本质其实是阻止玩家站桩输出,同时测试玩家的跑动,跳跃,冲刺和格挡能力。boss通过各种模式的攻击组合在一起,但是这些也是可预测的,会通过动画,音效,文字来暗示你,这称之为前摇暗示“telegraphing”,敌人的前摇时长决定了游戏难度。强力的攻击往往前摇......
  • 随笔 [随更] 毕业前夕
    暂未开放。随笔[随更]毕业前夕2024/5/30毕业前约一个月毕业联欢会前夕明天就是班级毕业联欢会了,准备了几个自己最喜欢的吉他曲目,现在晚上,刚刚练完,手有点麻。今晚没有月亮,被层云遮盖的天没什么亮光。我想,联欢会本是应该感到高兴才对,我却总感觉怅然若失。也许是快要分别的......
  • python 把指定的一张图片 改为 jpg dpi 300
    使用了Python的Pillow库fromPILimportImageImage.MAX_IMAGE_PIXELS=2000000000#设置最大处理像素极限defconvert_image_to_jpg(input_path,output_path,dpi=300):withImage.open(input_path)asimg:#设置DPIimg.info['dpi']=(dpi,dp......
  • UE4中PhysX BroadPhase(碰撞检测的粗略阶段)
    PhysX的BroadPhase(碰撞检测的粗略阶段),具体是用AABB(轴向包围盒)来做碰撞检测具体算法有两种:SAP(SinglePruningBox,单个剪枝盒)和MBP(MultiPruningBox,多个剪枝盒) SAP(Single PruningBox,单个剪枝盒)当场景中有大量的物体(大世界有百万级别)时,即使它们已按AABB的三个轴向xyz做了排序......
  • python3.x中ORM框架SQLObject使用SQLite数据库随笔
    1、如果未安装SQLObject首先要安装,在管理员CMD下,输入如下命令:pipinstallsqlobject2、创建数据库文件,并建立数据库连接,通过修改SQLObject内置的sqlhub的processConnection属性,具体代码如下sqlobject.sqlhub.processConnection=sqlobject.connectionForURI('sqlite:.......