手机号码 数位DP模板题 记忆化搜索: #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define int long long ],dp[][][][][][]; int dfs(int len,bool ok,int last,bool same,bool four,bool eight,bool shangxian)//剩余的位数,是否已经有三个连续相同的数字,…
题目大意:给你两个$l,r$,求出$[l,r]$中符合要求的数,要求为至少有$3$个相邻的相同数字,且不可以同时出现$8$和$4$ 题解:数位$DP$ 卡点:无 C++ Code: #include <cstdio> #include <algorithm> long long l, r; int num[13], tot; long long f[13][4][2][2][11]; long long calc(int x, int lim, int lead, int had4…
常规线性dp,需要时就加一维.\(dp[i][j][t][s]\)表示在点\((i,j)\)时瓶子里剩\(t\)且为\(s\)走(0代表小a,1代表uim)时的方案数. de了半天发现是初次尝试的快速取模少写个等号--然鹅改了以后为什么比正常写跑得慢-- #include <cstdio> const int mod = 1e9 + 7; int n, m, k, ans; int a[805][805], dp[805][805][20][2]; void add(int &x, i…