首页 > 其他分享 >HDU 3709 数位dp

HDU 3709 数位dp

时间:2023-02-13 11:59:28浏览次数:79  
标签:HDU val point int 18 pos 3709 dp

HDU 3709(数位dp)

题意

求区间[L,R] 内满足以下性质的数:选定该数的一个位置,左右两边的力矩相等,如4139 ,选取'3'这位,左边 4×2+1×1 = 9×1.

思路

一开始想着枚举每个点来做,考虑正确性:对于同一个数,若它存在某个位置pos使得它满足性质,则将这个位置左移,则左值变小,右值变大,反之同理,必然不会导致重复

然后设计dp数组的状态,一开始直接设的暴力数组f[pos][point][lsum][rsum],每一边的数最大可以到 9×17×18/2 = 1377,肯定爆空间,考虑减少一个维度,发现左右值可以抵消,变成f[pos][point][val], val=rsum-lsum,为了避免出现负数,加一个偏移值key.

还有一个坑点,一开始弄暴力数组的时候发现暴力不对,然后打表输出数字发现,每次枚举的时候0都会算多一次,所以要在最后减去cnt-1次(cnt为数字位数)

代码

const int key=9*18*18;
int a[21],cnt;
int f[21][21][key*2+10];
//最多是最左或者最右端,9*18*18(9*18*17/2)
int dfs(int pos,int val,int point,int limit)
{
   if(!pos) return val==key;
   if(!limit&&f[pos][point][val]!=-1) return f[pos][point][val];
   int up=limit?a[pos]:9,sum=0;
   for(int i=0;i<=up;i++)
   {
   	sum+=dfs(pos-1,val+(pos-point)*i,point,limit&&(i==up));
   }
   if(!limit) f[pos][point][val]=sum;
   return sum;
}

int work(int x) 
{
   cnt=0;
   if(x<0) return 0;
   if(x==0) return 1;
   while(x) a[++cnt]=x%10,x/=10;
   int sum=0;
   for(int i=1;i<=cnt;i++)
   {
   	sum+=dfs(cnt,key,i,1);
   }
   sum-=max(0ll,cnt-1);
   return sum;
}

标签:HDU,val,point,int,18,pos,3709,dp
From: https://www.cnblogs.com/LIang2003/p/17115804.html

相关文章

  • C - Cake HDU - 1722 (数学)
    题意:就是一个蛋糕,被分成n或者m份。问最少动几刀。看一下这个图,就知道公式了,n+m-gcd(n,m);#include<cstdio>#include<iostream>usingnamespacestd;#definelllon......
  • 【学习笔记】数位 dp 学习笔记
    被这个东西薄纱了。顾名思义,树上的动态规划即树形动态规划。P1352没有上司的舞会经典题!设\(f_{i,0/1}\)表示第\(i\)个节点,选或不选自己的最优情况。显然有方程......
  • 状态压缩dp
    最短Hamilton路径给定一张n个点的带权无向图,点从0∼n−1标号,求起点0到终点n−1的最短Hamilton路径。Hamilton路径的定义是从0到n−1不重不漏地经过每个点......
  • 【notedpad++结合HEX-Editor插件】的替代品【vscode+HEX Editor插件】
    近期由于一些原因,notepad++作者违背了开源精神,想必大家也在寻找notedpad++的替代品。之前由于UE需要付费,于是使用了【notedpad++结合HEXDump插件】来为文件十六进制......
  • HDU 4389 数位dp
    HDU4389(数位dp)题意求一个区间内[L,R]内有多少个数满足:它的数位和能整除它本身。思路按照一般数位dp的套路,多出来的参数无非就是数位和以及这个数本身,但如果直接这......
  • HDU 1024 Max Sum Plus Plus
    题目大意:给定一个长度为\(n\)数组,求划分成\(m\)段不相交区间的子段和最大值得问题那么需要考虑得就是对于第i个数字,是否选中它在m个区间中,以及如果选中它那么它在第几个......
  • 树形dp
    没有上司的舞会Ural大学有N名职员,编号为1∼N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数Hi给出,其中1≤i≤N......
  • Python引入模块报错:Import "openai" could not be resolvedPylancereportMissingImpor
    复制Openai的代码进行测试的时候,发生:Import"openai"couldnotberesolvedPylancereportMissingImports  以为是安装问题,检查安装,发现没有这个模块: 直接进行......
  • 71udp,tcp
    udp相当与写信,tcp相当于打电话1、基于连接与无连接;2、对系统资源的要求(TCP较多,UDP少);3、UDP程序结构较简单;4、流模式与数据报模式;5、TCP保证数据正确性,UDP可能丢包;6......
  • 某种DP
    某种DP感觉没见到固定的专业术语,我习惯叫它为预设性\(DP\),也有人叫它连续段\(DP\),插入\(DP\)为什么这么说?因为\(DP\)的过程就是预先留出位置,然后把元素按照某种......