hdu 4352 数位dp+nlogn的LIS
2024-08-31 00:04:26
题意:求区间L到R之间的数A满足A的的数位的最长递增序列的长度为K的数的个数。
链接:点我
该题的关键是记录LIS的状态,学习过nlogn解法的同学都知道,我们每次加入的元素要和前面的比对替换,这里就用了这个方法
比如1 3 6,用二进制表示为001000101,假如新加入的数为2,那么我们枚举比2大的数,观察是否存在,这里找到3,我们把3替换成2,状态变成1,2,6
不懂的童鞋可以看这里的nlogn的介绍:点我
还有就是注意前导0
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
typedef long long ll;
const int INF=0x3f3f3f3f;
const double eps=1e-;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
const int MAXN=;
int n,m,tt,K;
ll dp[][<<][];
int digit[];
int k;
ll getst(ll s,ll u,ll& xx) // 状态转移
{
ll i,ss;
for(i=u;i<;i++)
{
if(s&(<<i)) break ; //有比u大的,替换掉
}
if(i<)
{
ss=s^(<<i);
ss=ss^(<<u);
}
else //没有比u大的,u放入s中
{
xx++;
ss=s^(<<u);
}
return ss;
}
ll dfs(int p,ll s,ll len,int fl,bool e) { //位置,lis状态,lis长度,前导0
if (p==-) return len==k;
if (!e &&dp[p][s][k]!=-) return dp[p][s][k];
ll res = ;
int u=e?digit[p]:;
for (int i=;i<=u;++i)
{
ll ns,nlen=len;
if(fl==&&i==) ns=;
else ns=getst(s,i,nlen);
res+=dfs(p-,ns,nlen,fl||i!=,e&&i==u);
}
return e?res:dp[p][s][k]=res;
}
ll solve(ll n)
{
int len=;
while(n)
{
digit[len++]=n%;
n/=;
}
return dfs(len-,,,,);
}
int main()
{
int i,j;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
scanf("%d",&tt);
int ca=;
memset(dp,-,sizeof(dp));
while(tt--)
{
ll l,r;
scanf("%I64d%I64d%I64d",&l,&r,&k);
ll ans=solve(r)-solve(l-);
printf("Case #%d: %I64d\n",++ca,ans);
}
}
最新文章
- perl学习之路2
- jquery常用代码
- Android Studio 引入Lambda表达式
- RSYNC--数据迁移、备份
- activity_main.xml与fragment_main.xml
- cellspacing cellpadding
- VB热点答疑(2016.5.11更新Q4、Q5)
- hibernate spring 事务配置
- 运行第一个Hadoop程序,WordCount
- 【Vbox】centos虚拟机安装usb网卡驱动
- Mac 使用 OpenMP/Clang
- jumpserver篇--安装
- WCF 寄宿Windows以及控制台启动
- Python全栈之路----常用模块----os模块
- imp-oracle10g数据库dmp导入到11g数据库提示IMP-00058,表或试图不存在
- golang 爬虫
- prometheus的agent 二次开发代码参考
- JS正则验证邮箱的格式(转)
- (转)【多媒体封装格式详解】--- AAC ADTS格式分析
- 什么是TensorFlow Serving
热门文章
- Android 搭建Linux系统
- Hbuilder连接第3方模拟器(夜神)
- notepad++突然崩溃,保存的文件没了怎么办
- 使用showplan.sql分析sql Performance
- apache2启动失败(Failed to start The Apache HTTP Server.)解决方案
- Linux-Load Average解析(转)
- HDU 6194 string string string 2017沈阳网络赛 后缀数组
- php 全文搜索解决方法
- oracle中的符号含义
- 《跟老齐学Python Django实战》读后感