当前位置:网站首页>P2022 有趣的数(二分&数位dp)
P2022 有趣的数(二分&数位dp)
2022-07-06 04:11:00 【Harris-H】
P2022 有趣的数(二分&数位dp)
麻了。
二分答案,然后用数位dp计算 [ 1 , x ] [1,x] [1,x]中有多少个数字字典序 < < < k k k。
数位dp的时候开两个数组 a , b a,b a,b存 x , k x,k x,k。
然后就是常规的数位dp操作。
注意如果 d p dp dp数组开到 l i m , l e a d lim,lead lim,lead 则每次 c h e c k check check 都需要初始化 d p dp dp为 − 1 -1 −1。
因为这两个变量与 x x x有关。
否则可以只初始化一次。
另外 w , w 1 w,w1 w,w1长度不一定相同,所以 p o s 2 pos2 pos2可能减到 − 1 -1 −1。因此让 w 1 w1 w1基数为 20 20 20。
// Problem: P2022 有趣的数
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P2022
// Memory Limit: 125 MB
// Time Limit: 400 ms
// Date: 2022-07-05 13:23:31
// --------by Herio--------
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll f[20][40][2][2][2],n,m;
int a[20],w;
int b[40],w1;
ll dfs(int pos, int pos2, bool cmp, bool lim, bool lead) {
if (pos == 0)
return (cmp || pos2 > 20) && (!lead);
if ( f[pos][pos2][cmp][lim][lead] != -1)
return f[pos][pos2][cmp][lim][lead];
ll tmp = 0, up = lim ? a[pos] : 9;
for (int i = 0; i <= up; ++i) {
bool nxcmp = !(lead && i == 0) && i < b[pos2];
nxcmp |= cmp;
if (!cmp && i > b[pos2])
continue;
tmp += dfs(pos - 1, pos2 - ((lead && i == 0) ? 0 : 1), nxcmp, lim && i == a[pos], lead && i == 0);
}
return f[pos][pos2][cmp][lim][lead] = tmp;
}
ll check(ll n) {
w = 0;memset(f, -1, sizeof (f));
while (n)
a[++w] = n % 10, n /= 10;
//printf("w=%d\n",w);
ll re = dfs(w, w1, false, true, true);
return re;
}
int main()
{
scanf("%lld%lld", &n, &m);
w1 = 20;
ll l = m > n ? m : n, r = 7e17, ans = 0;
while (n)
b[++w1] = n % 10, n /= 10;
//printf("w1=%d\n",w1);
for (; l <= r;) {
ll mid = (l + r) >> 1, tmp = check(mid);
// printf("%lld %lld\n",mid,tmp);
if (tmp == m - 1) {
ans = mid; r = mid - 1;
}
else if (tmp < m - 1) l = mid + 1;
else r = mid - 1;
}
printf("%lld\n", ans);
}
边栏推荐
- Fundamentals of SQL database operation
- 自动化测试的好处
- DM8 archive log file manual switching
- What is the difference between gateway address and IP address in tcp/ip protocol?
- Global and Chinese markets for fire resistant conveyor belts 2022-2028: Research Report on technology, participants, trends, market size and share
- Error 1045 (28000): access denied for user 'root' @ 'localhost' (using password: no/yes
- 《2022年中国银行业RPA供应商实力矩阵分析》研究报告正式启动
- How can programmers resist the "three poisons" of "greed, anger and ignorance"?
- Several important classes in unity
- 综合能力测评系统
猜你喜欢

1291_Xshell日志中增加时间戳的功能

Yyds dry goods inventory web components series (VII) -- life cycle of custom components

Overturn your cognition? The nature of get and post requests

Redis (replicate dictionary server) cache

How to solve the problem of slow downloading from foreign NPM official servers—— Teach you two ways to switch to Taobao NPM image server
![[Zhao Yuqiang] deploy kubernetes cluster with binary package](/img/45/6777fa919386e526dbb0d2c808a7f2.jpg)
[Zhao Yuqiang] deploy kubernetes cluster with binary package

How many of the 10 most common examples of istio traffic management do you know?

Figure application details

How to modify field constraints (type, default, null, etc.) in a table

math_ Derivative function derivation of limit & differential & derivative & derivative / logarithmic function (derivative definition limit method) / derivative formula derivation of exponential functi
随机推荐
Several important classes in unity
Lombok原理和同时使⽤@Data和@Builder 的坑
《2022年中国银行业RPA供应商实力矩阵分析》研究报告正式启动
asp. Core is compatible with both JWT authentication and cookies authentication
[FPGA tutorial case 11] design and implementation of divider based on vivado core
AcWing 243. A simple integer problem 2 (tree array interval modification interval query)
Recommendation system (IX) PNN model (product based neural networks)
【FPGA教程案例12】基于vivado核的复数乘法器设计与实现
DM8 archive log file manual switching
Scalpel like analysis of JVM -- this article takes you to peek into the secrets of JVM
C form application of C (27)
关于进程、线程、协程、同步、异步、阻塞、非阻塞、并发、并行、串行的理解
[PSO] Based on PSO particle swarm optimization, matlab simulation of the calculation of the lowest transportation cost of goods at material points, including transportation costs, agent conversion cos
P2648 make money
Database, relational database and NoSQL non relational database
Hashcode and equals
Record the pit of NETCORE's memory surge
What is the difference between gateway address and IP address in tcp/ip protocol?
Esp32 (based on Arduino) connects the mqtt server of emqx to upload information and command control
Error 1045 (28000): access denied for user 'root' @ 'localhost' (using password: no/yes