[HDU4352]XHXJ's LIS
[HDU4352]XHXJ's LIS
题目大意:
\(T(T\le10000)\)组询问,每次给出\(l,r,k(l\le r\le 2^{63},k\le10)\),求若将数字看成一个字符串,有多少个\([l,r]\)中的数满足LIS为\(k\)。
思路:
\(f_{i,j,k}\)表示考虑前\(i\)位,LIS中数的状态为\(j\),长度为\(k\)的方案数。数位DP即可。非边界情况可以记忆化搜索。
源代码:
#include<cstdio>
#include<cctype>
#include<cstring>
typedef long long int64;
inline int64 getint() {register char ch;while(!isdigit(ch=getchar()));register int64 x=ch^'0';while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');return x;
}
const int D=20;
int k,dig[D];
int64 f[D][1<<10][11];
inline int upd(const int &s,const int &x) {for(register int i=x;i<10;i++) {if((s>>i)&1) return s^(1<<i)^(1<<x);}return s^(1<<x);
}
int64 dp(const int &dep,const bool &zero,const bool &lim,const int &s) {if(dep==0) return __builtin_popcount(s)==k;if(!lim&&f[dep][s][k]!=-1) return f[dep][s][k];int64 ret=0;for(register int i=0;i<=(lim?dig[dep]:9);i++) {ret+=dp(dep-1,zero&&(i==0),lim&&(i==dig[dep]),(zero&&(i==0))?0:upd(s,i));}if(!lim) f[dep][s][k]=ret;return ret;
}
inline int64 calc(int64 n) {for(dig[0]=0;n;n/=10) {dig[++dig[0]]=n%10;}return dp(dig[0],true,true,0);
}
int main() {const int T=getint();memset(f,-1,sizeof f);for(register int i=1;i<=T;i++) {const int64 l=getint(),r=getint();k=getint();printf("Case #%d: %lld\n",i,calc(r)-calc(l-1));}return 0;
}
转载于:https://www.cnblogs.com/skylee03/p/9727499.html
[HDU4352]XHXJ's LIS相关推荐
- 【HDU 4352】 XHXJ's LIS (数位DP+状态压缩+LIS)
XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 4352 XHXJ's LIS(*数位DP 记忆化搜索 待整理)
XHXJ's LIS HDU - 4352 #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then caref ...
- hdu 4352 XHXJ's LIS
题意: 先定义一个数的power value,把这个数看成一个字符串,他的最长上升子序列的长度就是他的power value,求某个区间内power value等于k的数的个数. 解法: 很显然要数位 ...
- HDU 4352 XHXJ#39;s LIS(数位dpamp;状态压缩)
题目链接:[kuangbin带你飞]专题十五 数位DP B - XHXJ's LIS 题意 给定区间.求出有多少个数满足最长上升子序列(将数看作字符串)的长度为k. 思路 一个数的上升子序列最大长度为 ...
- kuangbin带你飞专题合集
题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...
- 动态规划总结与题目分类
源博客链接:http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少 ...
- 『ACM-算法-动态规划』初识DP动态规划算法
一.多阶段决策过程的最优化问题 在现实生活中,有类活 动的过程,由于 它的特殊性,可将过程分成若干个互相阶段.在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.当阶段决策的选取不是任意确 ...
- 算法学习经典例题整理
陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...
- (转)dp动态规划分类详解
dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...
- 《动态规划》— 动态规划分类
动态规划(英语:Dynamic programming,DP)是一种在数学.计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最 ...
最新文章
- java修改数据库表结构_数据库设计(一):设计传统系统表结构(Java开发)
- vsftp 添加虚拟帐号
- 从证书中导出公钥并存放到项目中
- Android开发的第一天
- window下python2和python3的共存
- 在学校外边找了份工作
- 如何在PR中同步音频和视频
- jensen不等式(jensen不等式对于凹函数)
- ftp文件下载工具,三个非常好使的ftp文件下载工具
- PHP上传视频到阿里云oss
- 「好书推荐」那些精彩的引人深思、充满反转的推理小说推荐
- 英语作业介绍一项发明计算机,计算机专业英语第1次作业.doc
- 机器学习40讲-12正则化处理:收缩方法与边际化
- c#跳出循环break与continue
- fastadmin介绍
- Docker Swarm nginx 集群搭建
- ccleaner中文版下载
- 2016计算机考研大纲视频,2016年考研专业课计算机大纲详解:操作系统
- tomcat页面显示404
- 如何检测计算机病毒并做成ppt,计算机病毒-ppt-4行为检测.ppt