当前位置:网站首页>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);
}
边栏推荐
- Basic knowledge of binary tree, BFC, DFS
- Prime protocol announces cross chain interconnection applications on moonbeam
- Comprehensive ability evaluation system
- Path of class file generated by idea compiling JSP page
- Tips for using dm8huge table
- Several important classes in unity
- Redis (replicate dictionary server) cache
- 脚本生命周期
- Le compte racine de la base de données MySQL ne peut pas se connecter à distance à la solution
- math_ Derivative function derivation of limit & differential & derivative & derivative / logarithmic function (derivative definition limit method) / derivative formula derivation of exponential functi
猜你喜欢
C form application of C (27)
Stc8h development (XII): I2C drive AT24C08, at24c32 series EEPROM storage
Solution of storage bar code management system in food industry
[Key shake elimination] development of key shake elimination module based on FPGA
WPF effect Article 191 box selection listbox
Security xxE vulnerability recurrence (XXe Lab)
Solution to the problem that the root account of MySQL database cannot be logged in remotely
Développement d'un module d'élimination des bavardages à clé basé sur la FPGA
Exchange bottles (graph theory + thinking)
Class A, B, C networks and subnet masks in IPv4
随机推荐
2/13 review Backpack + monotonic queue variant
Brief tutorial for soft exam system architecture designer | general catalog
10个 Istio 流量管理 最常用的例子,你知道几个?
Chinese brand hybrid technology: there is no best technical route, only better products
C form application of C (27)
Fundamentals of SQL database operation
Stc8h development (XII): I2C drive AT24C08, at24c32 series EEPROM storage
[introduction to Django] 11 web page associated MySQL single field table (add, modify, delete)
Overturn your cognition? The nature of get and post requests
math_ Derivative function derivation of limit & differential & derivative & derivative / logarithmic function (derivative definition limit method) / derivative formula derivation of exponential functi
Path of class file generated by idea compiling JSP page
Slow SQL fetching and analysis of MySQL database
【按键消抖】基于FPGA的按键消抖模块开发
MySQL learning record 13 database connection pool, pooling technology, DBCP, c3p0
DM8 archive log file manual switching
pd. to_ numeric
Lambda expression learning
80% of the diseases are caused by bad living habits. There are eight common bad habits, which are both physical and mental
Ks003 mall system based on JSP and Servlet
Execution order of scripts bound to game objects