数位DP!
dp[i][j][k]:第i位数,状态为j,长度为k

代码如下:

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define ll __int64
using namespace std;
ll dp[][][];
int bit[],k;
int Getlen (int sta)//求出最长上升子序列的长度
{
int ret = ;
while (sta)
{
ret += (sta&);
sta >>= ;
}
return ret;
} int Getnew(int x , int sta)//更新当前数的最长上升子序列的状态
{
int i;
for (i = x ; i <= ; i++)
if ((sta & (<<i)))
return (sta-(<<i))|(<<x);
return sta|(<<x);
}
ll dfs(int pos,int s,bool z,bool f)
{
if(pos==-) return Getlen(s)==k;
if(!f&&dp[pos][s][k]!=-) return dp[pos][s][k];
ll ans=;
int e=f?bit[pos]:;
for(int i=;i<=e;i++){
ans+=dfs(pos-,(z&&i==)?:Getnew(i,s),z&&i==,f&&i==e);
}
if(!f&&dp[pos][s][k]==-) dp[pos][s][k]=ans;
return ans;
}
ll cal(ll n)
{
int m=;
while(n){
bit[m++]=n%;
n/=;
}
return dfs(m-,,,);
}
int main()
{
int t,i,j,ca=;
ll a,b;
scanf("%d",&t);
memset(dp,-,sizeof(dp));
while(t--){
scanf("%I64d%I64d%d",&a,&b,&k);
printf("Case #%d: %I64d\n",++ca,cal(b)-cal(a-));
}
return ;
}

hdu 4352 XHXJ's LIS 数位DP的更多相关文章

  1. HDU 4352 XHXJ's LIS 数位dp lis

    目录 题目链接 题解 代码 题目链接 HDU 4352 XHXJ's LIS 题解 对于lis求的过程 对一个数列,都可以用nlogn的方法来的到它的一个可行lis 对这个logn的方法求解lis时用 ...

  2. hdu 4352 XHXJ's LIS 数位dp+状态压缩

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others ...

  3. HDU.4352.XHXJ's LIS(数位DP 状压 LIS)

    题目链接 \(Description\) 求\([l,r]\)中有多少个数,满足把这个数的每一位从高位到低位写下来,其LIS长度为\(k\). \(Solution\) 数位DP. 至于怎么求LIS, ...

  4. HDU 4352 XHXJ's LIS (数位DP+LIS+状态压缩)

    题意:给定一个区间,让你求在这个区间里的满足LIS为 k 的数的数量. 析:数位DP,dp[i][j][k] 由于 k 最多是10,所以考虑是用状态压缩,表示 前 i 位,长度为 j,状态为 k的数量 ...

  5. $HDU$ 4352 ${XHXJ}'s LIS$ 数位$dp$

    正解:数位$dp$+状压$dp$ 解题报告: 传送门! 题意大概就是港,给定$[l,r]$,求区间内满足$LIS$长度为$k$的数的数量,其中$LIS$的定义并不要求连续$QwQ$ 思路还算有新意辣$ ...

  6. hdu 4352 XHXJ's LIS 数位DP+最长上升子序列

    题目描述 #define xhxj (Xin Hang senior sister(学姐))If you do not know xhxj, then carefully reading the en ...

  7. HDU 4352 - XHXJ's LIS - [数位DP][LIS问题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  8. HDU 4352 XHXJ's LIS ★(数位DP)

    题意 求区间[L,R]内满足各位数构成的数列的最长上升子序列长度为K的数的个数. 思路 一开始的思路是枚举数位,最后判断LIS长度.但是这样的话需要全局数组存枚举的各位数字,同时dp数组的区间唯一性也 ...

  9. hdu 4352 XHXJ's LIS(数位dp+状压)

    Problem Description #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefull ...

随机推荐

  1. Python常用内建模块

    Python常用内建模块 datetime 处理日期和时间的标准库. 注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import da ...

  2. ZygoteInit 相关分析

    上一篇文章我们已经分析到调用com.android.internal.os.ZygoteInit类的main函数. 今天分析一下com.android.internal.os.ZygoteInit类的 ...

  3. String.split()方法你可能不知道的一面

    一.问题 java中String的split()是我们经常使用的方法,用来按照特定字符分割字符串,那么我们看以下一段代码: public void splitTest() { String str = ...

  4. 一位iOS教育类应用开发者是如何赚到60多万美元?

    注:伯乐在线12月19日在@程序员的那些事 微博推荐了此文的英文原文,非常感谢@dotSlash 的翻译.  转眼距我写<我如何在iOS教育类应用中赚到20万美元>这篇博文已经一年多了,它 ...

  5. MYSQL与 R

    1. 配置MySQL ODBC必须先安装MySQL ODBC driver下载地址可以为:http://www.mysql.com/downloads/connector/odbc/ 2. 控制面板\ ...

  6. PID

    http://blog.gkong.com/liaochangchu_117560.ashx

  7. java 参数化类型

    package com.gxf.collection; import java.util.LinkedList; public class TestForT<T> { private Li ...

  8. 字符串流sstream[part3/使用字符串流进行安全的类型转换]

    参考: http://blog.163.com/zhuandi_h/blog/static/180270288201291710222975/ http://www.cnblogs.com/games ...

  9. C++(MFC)编程中遇到的的一些函数

    memset void memset( void dest, int c, size_t count ); dest: Pointer to destination c: Character to s ...

  10. npm ERR!无法安装任何包的解决办法

    npm ERR! Windows_NT 6.1.7601npm ERR! argv "E:\\node\\\\node.exe" "E:\\node\\node_modu ...